根据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;
}
答案 0 :(得分:3)
这是一个输入popen()
流,而不是输出流。
fflush()
函数仅对输出或更新流进行操作,而不是输入流。