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

标签 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,我找不到方法来做到这一点。

最佳答案

_popenpopen可以吗?

#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/

相关文章:

c - sizeof argv[1] 不起作用

c++ - 文件流实际上是如何工作的?

c++ - 我想预先递增对变量的赋值(预先递增超过 1 的值)?

c++ - sqlite3 将数据转换为短数组

c++ - 头文件和库有什么区别?

c - 嵌套c语言函数

c++ - gcc内联汇编jmp地址;裸函数

c - 获取 DRAM 或 SRAM galaxy S7 的起始地址

c - 有没有一种标准的方法来使用 Unicode 字符串文件路径进行 fopen?

c - 将 '\0' 添加到非空终止 "string"的末尾