0
我正在使用C++並嘗試在外部進程中運行shell命令。這裏是我到目前爲止的代碼:使用exec/fork運行外部進程
pid_t pid;
pid = fork();
if(pid == 0){
execv(args[0],args);
} else {
wait();
}
我的第一個問題是,我需要從傳遞到exec shell命令的輸出,我不知道如何獲取。在運行上面的代碼之後,主程序也自我複製,我不知道爲什麼。
你還應該處理'pid == -1'的情況。即使只是打印出錯信息並退出。 – derobert
你應該有'exit(1);'並且可能在'execv()'之後有一個打印的消息。你的'重複自己'可能是因爲'argv [0]'是'「ls」'而不是''/ bin/ls「而''execv()'不使用PATH進行搜索。因此,'execv()'失敗,並且孩子繼續或多或少地做父母所做的事情。 –