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);