popen()实现,fd泄漏和vfork()

时间:2015-09-10 11:51:38

标签: popen vfork

popen()的glibc实现中,它指定了

  

popen()函数应确保在新的子进程中关闭在父进程中保持打开的先前popen()调用的任何流。

为什么呢?如果目的是避免fd泄漏,为什么不关闭所有打开的fds?

popen()的glibc实现使用fork()。虽然dup2()close()之间存在fork()exec()次呼叫,但是可以将fork()替换为vfork()以提高性能吗?

popen()的Linux实施是基于fork()而不是vfork()?为什么(或为什么不)?

我要编写popen()的双向版本,它返回两个FILE*:一个用于读取,一个用于写入。我该如何正确实现?它应该是线程安全的,没有fd泄漏。如果它很快就会更好。

0 个答案:

没有答案