c - 将 fmemopen ed 文件描述符设置为子进程的标准输入

标签 c linux pipe mmap

我在 Linux 中有一个 fmemopen 文件描述符(指向父缓冲区),我希望能够在 C 中将此文件描述符设置为子进程的标准输入(我不为子进程设置)可以访问代码)

这可能吗?如果是这样,我该怎么做?如果可能的话,我想避免必须写入磁盘。

最佳答案

这是不可能的。继承 stdin/out/err 完全基于文件描述符,而不是 stdio FILE 流。由于 fmemopen 不创建文件描述符,因此它不能成为新进程的 stdin/out/err 或以任何方式用于进程间通信。你要找的是一个管道,除非你需要寻找,在这种情况下你需要一个临时文件。 tmpfile 函数可用于创建文件,而不必担心在文件系统中创建一个可见的名称。

关于c - 将 fmemopen ed 文件描述符设置为子进程的标准输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7316775/

相关文章:

C 检查开放端口上运行的服务

c - 如何在c中操作输入文件中的数据?

c++ - 直观地解释指针及其意义?

linux - 如何以非交互方式打开 Linux 内核 .config 文件中的功能?

linux - ack/ag/grep 可以打印函数名吗?

c - 将 execvp 的输出放入字符串中

linux - 使用 Perl 将压缩数据写入文件,以便稍后可以即时解压缩(作为 STDIN)

java - 在进行特定系统调用时记录 java 堆栈跟踪?

c - 为什么 GNU configure 将 SIZEOF_INT 等的宏定义为特定的整数值?

c - 如何在 Linux 中实现不同时区的夏令时?