0

UNIXのC++プログラムからwgetを呼び出そうとしています。forkを使用した後、子プロセス内で呼び出したいので、system()ではなくexecを使用する必要があります。私がしたことは

pid_t pID = fork();
if (pID == 0)
{
   execl("/bin/wget","wget", "http://google.gr",(char*)0);
}

実行可能ファイルと同じフォルダにhtmlファイルがあることを期待していますが、これは発生しません。適切に行うにはどうすればよいですか?

4

1 に答える 1

1

まず、使用しないでください/bin/wget-wget常ににインストールされるとは限りません/bin; 最初の引数を単独で渡すwgetだけで、PATHが検索されます。

execl第二に、それが戻らないと思い込まないでください。むしろ、perror()エラーの後にエラーを適切にログに記録するように呼び出す必要があります(その後、コードでゼロ以外のステータスで終了します)。

親プロセスで何が起こっているのかを確認strace -fし、execを探すこともできますが、コードにエラー処理を追加することは、どのような場合でも正しいことです。

于 2012-05-22T14:22:20.997 に答える