【发布时间】:2017-07-29 03:54:00
【问题描述】:
我有以下C 程序。
#include<stdio.h>
int main() {
int i = 0;
char ch;
printf("Starting test application\n");
for (i=0; i<10; i++) {
ch = getchar();
printf("character at %d = %d\n", i, ch);
}
return 0;
}
我想将此程序作为Go 语言的子进程运行。在我的Go 代码中,我有一个byte 数组,我想将其用作C 程序的输入。我尝试了以下方法,但没有成功。
cmd := exec.Command("/home/dodtech/go-workspace/MachineListener/Test")
cmd.Stdout = os.Stdout
err := cmd.Start()
if err == nil {
var ctrlc [9]byte
ctrlc[0] = 0x00
ctrlc[1] = 0x01
ctrlc[2] = 0x02
ctrlc[3] = 0x03
ctrlc[4] = 0x04
ctrlc[5] = 0x05
ctrlc[6] = 0x06
ctrlc[7] = 0x07
ctrlc[8] = 0x08
ctrlc[9] = 0x09
cmd.Stdin = bytes.NewReader(ctrlc[0:])
cmd.Stdin.Read(ctrlc[0:])
}
需要注意的是,以上两个程序都只是一个测试程序,它们只代表我想要实现的目标。它们并不意味着高效,也不是根据编程指南编写的(例如创建字节数组的方式)。如果我能解决这个小案例的问题,我将能够将它移植到我的实际软件代码中。如果有人能指导我如何做到这一点,我将不胜感激。
【问题讨论】:
标签: go