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()'失败,并且孩子继续或多或少地做父母所做的事情。 –