繁体   English   中英

为什么这个 execlp() function 没有执行?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM