C语言 来自 fork 的 Pid 不是 0 或小于 0(minix)



我正在编写一个C程序,我需要在代码中间复制一些目录。所以我写了这个函数,我尝试使用 fork 然后使用 execvp。但是,此代码似乎没有输入pid==0,并且也不小于0。可能出了什么问题?如果这很重要,我正在使用minix

    void execCopy() {
    printf("I'm in execCopyn");
    printf("ERROR 0: %sn",strerror(errno));

    int pid = fork();
    if(pid < 0) {
        printf ("fork failed with error code= %dn", pid);
        fprintf(stderr,"FORK errorn");
    }
    printf("ERROR 1: %sn",strerror(errno));
    char *execArgs[] = { "cpdir", "-R", copy_path,paste_path, NULL };
    printf("Copy from %s to %sn",copy_path,paste_path);
    if(pid == 0) {
        printf("I'm gonna execn");
        execvp("cpdir", execArgs);
        printf("I should never get here n");
    }
    else {
        printf("I'm the father, going to returnn");
        printf("ERROR 2: %sn",strerror(errno));
        return;
    }
}

输出

Dec 26 20:34:11 192 kernel: I'm in execCopy
Dec 26 20:34:11 192 kernel: ERROR 0: Not a directory
Dec 26 20:34:11 192 kernel: ERROR 1: Not a directory
Dec 26 20:34:11 192 kernel: Copy from /./home to /./home/lcom
Dec 26 20:34:11 192 kernel: I'm the father, going to return
Dec 26 20:34:11 192 kernel: ERROR 2: Not a directory
输出

缓冲可能会吞噬子进程输出。 尝试在执行官面前fflush(stdout)

编辑:分叉后,您应该看到两个错误 1 和两个从行复制。 你看不到任何子进程输出。

相关内容

  • 没有找到相关文章

最新更新