我想通过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 上可用,但我无法使用 fork
或 clone
。因此,我不知道如何为子进程设置 stdin
。
我的问题是,如果没有fork
,我找不到方法来做到这一点。
最佳答案
#ifdef __WIN32__
#define popen _popen
#endif
FILE *subprocess_stdin = popen("./command", "w");
fwrite(((char[]){1,2,3}), 1, 3, subprocess_stdin);
关于C - 设置 'popen' 子进程的标准输入 - 跨平台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51011783/