0
根據man popen
,「輸出popen()流默認被完全緩衝」。但是對於下面的代碼,我仍然可以獲取我的ls -l
命令的所有信息,而不使用fflush(p)
命令。這是否使感覺?我想我需要fflush(p)
來刷新存儲在用戶緩衝區中的命令輸出到std out。「輸出popen()流默認完全被緩衝」是什麼意思?
#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;
}
這應該是一個評論而不是答案。 –
@R:我不確定如何將此擴展爲答案。提問者很困惑,因爲'fflush()'對於一個明顯緩衝的流是不必要的。這就像一個缺少的分號 - 它不會引發詳細的答案,因爲沒有細節可以添加。 –
@DietrichEpp你是對的,它應該是輸入(對父進程) – henryyao