使用管道在Linux下的进程之间进行通信时,使用fdopen
从管道创建流然后在流上使用fread
/ fwrite
而不是{{ 1}} / read
?
答案 0 :(得分:0)
fdopen
是stdio
库的一部分。从stdio
manual开始,您就可以了:
标准I / O库提供简单而有效的缓冲 流I / O接口。输入和输出映射到逻辑数据 流和物理I / O特性被隐藏。该 功能和宏列在下面;更多信息可用 来自个人手册页。
然后:
stdio库是库libc的一部分,例程是 根据编译器cc(1)和pc(1)的需要自动加载。该 以下手册页的大纲部分说明了哪些内容 包含文件是要使用的,编译器的声明是什么的 函数看起来和感兴趣的外部变量。
作为 libc 的一部分,这意味着使用这些函数编写的程序将在所有符合标准的编译器中编译。如果您使用打开/写入(POSIX)编写程序,那么您的程序将只在POSIX系统上运行。
所以你可以推断(a)因为便携性而值得而且(b)如果你只是在Linux中使用它是不值得的,因为那时候使用open/write
你删除了大量的抽象(来自stdio) - 请记住,在GNU GLibC open/write
下是系统调用的包装器,你实际上并没有直接调用,所以a存在少量抽象。
答案 1 :(得分:0)
写入管道涉及系统调用和上下文切换。如果您想最小化这些,您可能希望使用stdio
函数在用户空间中进行缓冲,这也允许使用fprintf
格式化输出。
答案 2 :(得分:-1)