0

根据man popen,“默认情况下,输出 popen() 流是完全缓冲的”。但是对于下面的代码,我仍然可以得到我ls -l的命令的所有信息,没有fflush(p)命令。这有意义吗?我想我需要将fflush(p)存储在用户缓冲区中的命令输出刷新到标准输出。

#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;
}
4

1 回答 1

3

那是输入popen()流,而不是输出流。

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

于 2013-10-22T20:40:46.033 回答