根据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;
}