我在 Linux 中有一个 fmemopen 文件描述符(指向父缓冲区),我希望能够在 C 中将此文件描述符设置为子进程的标准输入(我不为子进程设置)可以访问代码)
这可能吗?如果是这样,我该怎么做?如果可能的话,我想避免必须写入磁盘。
最佳答案
这是不可能的。继承 stdin/out/err 完全基于文件描述符,而不是 stdio FILE 流。由于 fmemopen
不创建文件描述符,因此它不能成为新进程的 stdin/out/err 或以任何方式用于进程间通信。你要找的是一个管道,除非你需要寻找,在这种情况下你需要一个临时文件。 tmpfile
函数可用于创建文件,而不必担心在文件系统中创建一个可见的名称。
关于c - 将 fmemopen ed 文件描述符设置为子进程的标准输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7316775/