C-设置“ popen”子进程的标准输入-跨平台

时间:2018-06-24 16:22:44

标签: c

我想通过popen启动一个子进程。我无法将数据传输到其stdin

以下是Golang代码,可帮助您了解我正在尝试用C语言实现的功能。

subProcess := exec.Command("./command")
subProcess.Stdin = bytes.NewReader([]byte{1, 2, 3}) // create stream from bytes
subProcess.Run()

取自here

我正在寻找一个跨平台的解决方案。 _popen在Windows上可用,但是我不能使用forkclone。结果,我不知道如何为子流程设置stdin

我的问题是,没有fork,我找不到解决办法。

1 个答案:

答案 0 :(得分:0)

_popenpopen可以吗?

#ifdef __WIN32__
#define popen  _popen
#endif
FILE *subprocess_stdin = popen("./command", "w");
fwrite(((char[]){1,2,3}), 1, 3, subprocess_stdin);