[英]Why is this execlp() function not executing?
我正在尝试分叉一些子进程,然后在每个子进程上使用 execlp() 来执行另一组代码。 execlp() 似乎没有执行。
我试过 execl() 和 execlp(),但不知道我写错了什么。
// create child procs that use execlp()
for (int i = 0; i < num; i++){
if ((pids[i] = fork()) < 0){
perror("fork");
abort();
} else if (pids[i] == 0){
// do child work here
execlp("./fileWriter", "./fileWriter", num_threads, NULL);
printf("got here in child proc\n");
exit(0);
}
}
我期待它执行一个单独的文件,现在我刚刚写了一个打印语句,所以我知道其他文件何时实际运行。 而不是那个,我得到“在子进程中到达这里”,我添加了它,所以我知道子进程何时跳过了 execlp() 命令。
听起来你大部分时间都在那里,但我会给你我正在运行的版本:
char cNum[20];
// create child procs that use execlp()
for (ii = 0; ii < num; ii++)
{
sprintf(cNum,"%d", num_threads);
if ((pids[ii] = fork()) < 0){
perror("fork");
abort();
} else if (pids[ii] == 0){
// do child work here
ret=execlp("./fileWriter", "./fileWriter", cNum, (char *) NULL);
printf("got here in child proc: %d\n",ret);
perror("execlp");
exit(0);
}
}
execlp 必须是一个字符串(你得到了那个部分),如果你检查错误返回以查看错误来自哪里,它是“有帮助的”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.