したがって、次のように fork で複製している別の子プロセスで wget を実行しようとしています。
int child;
pid_t child = fork();
if ( child == 0 ) { // no errors
bool done = false; // set to false
while (!done) { // while not true do
execl("wget", "someurl", NULL);
done = true; // since dl finished
}
cout << "DL Finished\n"; // to see if child was successful
}
else if ( child != 0 ) { // errors
このコードで指摘できる明らかなエラーはありますか? 問題がある場合、これは私がメインで呼び出している void 関数内にあります。何が起こっているのかというと、ダウンロード中ではなく、「DL Finished」と表示されますが、wget は実行されません。その後、ターミナルが引き継ぎます。
これは Ubuntu 12.04.2 LTS で実行されます。以前、同じ void 関数内で子を使用して「ls」を実行しましたが、これは適切に動作します。つまり、ls のパス全体 (/bin/ls) を伝えています。フルパスを指定しないと、コマンドが検索されることを読みました。これが私が望んでいることです。