我在C
中有一个函数可以创建子进程并使其运行execvp
。
int Execute(char **arg)
{
pid_t pid;
int status;
if ((pid=fork()) == 0)
{
execvp(arg[0],arg);
perror("Execvp error");
exit(1);
}
else if (pid > 0)
{
waitpid(pid, &status, 0);
}
else
{
perror("Fork error");
exit(2);
}
}
现在我想将函数改为实际运行execvp
几次(例如5),并让父进程等待所有子进程完成。尝试在for
循环中将其全部包装,但execvp
只执行一次。我知道基本上execvp
'取代'当前的程序代码,但不知道迭代是否继续。
感谢您的帮助!
答案 0 :(得分:2)
首先,循环创建收集子PID的进程
$("button").click(function(e){
var text = $(e.target).closest(".row").find(".print").text();
alert(text)
})
其次,循环遍历waitpid调用每个有效的PID。
pid_t pid[5];
int i;
for (i = 0; i < 5; i++) {
if ((pid[i]=fork()) == 0) {
execvp(arg[0],arg);
perror("Execvp error");
_exit(1);
}
if (pid[i] < 0) {
perror("Fork error");
}
}