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 に答える