私はこれに数日間立ち往生しており、本当にイライラしています。
popen()
コマンドラインプロセスを呼び出し、その出力を取得してC文字列に保存するために使用しています。使ってfgets()
いたのですが、改行で切れるようなので使ってfread()
います。唯一の問題は、返される C 文字列が時々めちゃくちゃになることです。
これが私のコードです:
const char *cmd = "date";//This the shell command
char buf[BUFSIZ];//Output of the command
FILE *ptr;
int c;
if ((ptr = popen(cmd, "r")) != NULL)
while(fread(buf, sizeof(buf),1, ptr))
while ((c = getchar()) != EOF)
printf("output = %s", buf);
(void) pclose(ptr);
最終的な C 文字列には、存在しないはずの奇妙な文字が含まれている場合や、使用可能な文字列がない場合もあります。誰でも助けてもらえますか?):
編集: fgets() を使用するときに私が行っていたことは次のとおりです ただし、シェルコマンドはテキストを出力するものであれば何でもかまいません。「デート」だけじゃない。
if ((ptr = popen(cmd, "r")) != NULL)
while (fgets(buf, BUFSIZ, ptr) != NULL)
printf("output = %s", buf);
(void) pclose(ptr);