C-设置';波本';子流程';s标准-跨平台

C-设置';波本';子流程';s标准-跨平台,c,C,我想通过popen启动一个子流程。我无法将数据传输到其stdin 下面是Golang代码,它可以帮助您理解我试图在C中实现的目标 subProcess := exec.Command("./command") subProcess.Stdin = bytes.NewReader([]byte{1, 2, 3}) // create stream from bytes subProcess.Run() 取自 我正在寻找一个跨平台的解决方案\u popen在Windows上可用,但我不能使用for

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

下面是Golang代码,它可以帮助您理解我试图在C中实现的目标

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

我正在寻找一个跨平台的解决方案
\u popen
在Windows上可用,但我不能使用
fork
clone
。因此,我不知道如何为子流程设置
stdin

我的问题是,如果没有
fork

的话,我就找不到这样做的方法


当您将
popen()
“w”
模式一起使用时,您在文件流上写入的内容将进入流程的标准输入。没有更好的跨平台功能,除非您采用更大的跨平台库并将其移植到目标平台。对于Windows,请查看
CreateProcess
API,特别是
STARTUPINFO
结构:
#ifdef __WIN32__
#define popen  _popen
#endif
FILE *subprocess_stdin = popen("./command", "w");
fwrite(((char[]){1,2,3}), 1, 3, subprocess_stdin);