为什么此execlp()函数不执行?

问题描述 投票:0回答:1

我正在尝试派生多个子进程,然后在每个子进程上使用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()命令。

c exec
1个回答
0
投票

听起来好像您大部分都在那儿,但是我给您我正在运行的版本:

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必须是一个字符串(您有这部分),如果您检查错误返回以查看错误来自何处,则它是“有用的”。

© www.soinside.com 2019 - 2024. All rights reserved.