【发布时间】:2011-04-12 06:32:05
【问题描述】:
我正在尝试生成一个执行系统命令的进程,而我自己的程序仍在继续,两个进程将并行运行。我正在研究Linux。
我在网上查了一下,听起来我应该使用 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;
}
[更新]
感谢你们的 cmets。现在我的程序看起来像这样。一切正常,除了最后,我必须按 Enter 键才能完成程序。我不知道为什么我必须按最后一个输入?
#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,最后你应该添加一个return 0;,你的编译器可能会填写最后,并添加“按任意按钮继续”最后
标签: c++ linux process parallel-processing exec