什么“输出popen()流默认完全缓存”是什么意思?

时间:2013-10-22 20:39:05

标签: c linux file-io

根据man popen,“输出popen()流在默认情况下完全被提取”。但是对于以下代码,我仍然可以在没有ls -l命令的情况下获得fflush(p)命令的所有信息。这样做了吗?我以为我需要fflush(p)将存储在用户缓冲区中的命令输出刷新到std out。

#include <stdio.h>

int main()
{
   FILE *p=popen("ls -l","r");
   char buf[100];
   memset(buf,0x00,100);
   //fflush(p);

   fread(buf,sizeof(char),90,p);

   printf("%s",buf);
   pclose(p);

   return 0;
}

1 个答案:

答案 0 :(得分:3)

这是一个输入popen()流,而不是输出流。

fflush()函数仅对输出或更新流进行操作,而不是输入流。