私は子プロセスでこれを行っています:execlp ("wc", "wc" ,filename,"-l", NULL)
パイプ内の出力をリダイレクトして、親プロセスから読み取ります。
すべて正常に機能していますが、wc
オプションが指定されたファイル名を見つけられない場合、無限ループが発生します。検索オプションと同じこと。
の出力を確認するにはどうすればよいですexeclp
か、またはこの無限ループに入らないようにするにはどうすればよいですか?
これは、フォークで作成された子のコードです。
close(1);
if (dup (pipeCom[1]) != 1)
{
fprintf (stderr, "dup - 1\n");
exit (1);
}
execlp ("wc", "wc" ,filename,"-l", NULL);`
これは親プロセスのコードです:
wait();
if ((num = read(pipeCom[0],&out,200))==0)
perror("pipe error");
else {
out[num] = '\0';
}
printf("%s",out);