popen的目的是什么,为什么fdopen和fgets在某些情况下会更好地工作?

时间:2012-11-16 05:13:44

标签: c pipe popen fgets

据我所知,popen打开管道就像文件一样允许读/写,但不会fdopen和fputs / fgets更有效率吗?

2 个答案:

答案 0 :(得分:2)

<强> popen

  

popen()函数通过创建管道,分叉和调用shell来打开一个进程

<强> fgets

  

fgets()从流中读取最多一个小于大小的字符,并将它们存储到s指向的缓冲区中。

popen打开一个管道,fgets读取数据。一个人比另一个人工作“更好”,因为他们做了不同的事情。我想你可以说如果你想打开一个管道,popen会更好,而如果你想读取数据,fgets会更好,但这会推动它。

答案 1 :(得分:0)

man page for popen通过创建管道,分叉和调用shell来打开进程。

man page for fopen打开文件,其名称是路径指向的字符串,并将流与其关联。

man page for fgets从流中读取最多一个小于大小的字符,并将它们存储到s指向的缓冲区中。

popen用于打开管道(通常用于执行类似shell命令的操作),fopen用于打开文件,然后您可以使用fgets来读取从

因此,popenfgets是用于不同目的的不同功能。