我试图产生一个执行系统命令的进程,而我自己的程序仍在继续,两个进程将并行运行。我正在linux上工作。使用exec在新进程中执行系统命令
我在网上查找,听起来像我应该使用exec()家庭。但它不像我预期的那样工作。例如,在下面的代码中,我只看到“之前”被打印,但没有“完成”。
我很好奇,如果我什么都发出?
#include <unistd.h>
#include <iostream>
using namespace std;
main()
{
cout << "before" << endl;
execl("/bin/ls", "/bin/ls", "-r", "-t", "-l", (char *) 0);
cout << "done" << endl;
}
[更新]
谢谢你的人的意见。现在我的程序看起来像这样。一切工作正常,除了最后,我不得不按下完成程序。我不知道为什么我必须按最后输入?
#include <unistd.h>
#include <iostream>
using namespace std;
main()
{
cout << "before" << endl;
int pid = fork();
cout << pid << endl;
if (pid==0) {
execl("/bin/ls", "ls", "-r", "-t", "-l", (char *) 0);
}
cout << "done" << endl;
}
你的主要应该是'INT main',并在结束时,你应该添加一个'返回0;' 你有它的方式,很可能你的编译器将填补最后,并会在最后加上“按任意按钮继续” – akaltar 2012-08-10 21:17:14