所以我想在我用叉子複製一個單獨的子進程來執行的wget如下:EXECL與wget的,子進程,UNIX - 爲什麼它不工作
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
任何明顯的錯誤,你可以在這個代碼中指出?如果它很重要,這是一個無效函數,我打電話在主要發生的是,它不是下載,它顯示「DL成品」,但是不執行wget - 然後終端接管。
這是在Ubuntu 12.04.2 LTS上執行的。我以前在裏面使用相同的void函數子來執行「ls」,它可以正常工作,也就是我告訴它ls(/ bin/ls)的整個路徑。我讀到沒有提供完整的路徑將使它搜索命令,這是我想要的。
嘗試在exec調用中使用wget的完整路徑。 – suspectus 2013-04-07 10:45:36
當'fork'返回非零時,它不一定是錯誤。大多數時候它是新的子進程的進程ID。 – 2013-04-07 10:46:55