gpt4 book ai didi

c - 来自 fork 的 Pid 不为 0 或小于 0 (minix)

转载 作者:太空宇宙 更新时间:2023-11-04 02:45:41 27 4
gpt4 key购买 nike

我正在编写一个 C 程序,我需要在代码中间复制一些目录。所以我写了这个函数,在这里我尝试使用 fork,然后使用 execvp。不过这段代码好像没有输入pid==0,而且不小于0。有什么问题?如果这很重要,我正在使用 minix

    void execCopy() {
printf("I'm in execCopy\n");
printf("ERROR 0: %s\n",strerror(errno));


int pid = fork();

if(pid < 0) {
printf ("fork failed with error code= %d\n", pid);
fprintf(stderr,"FORK error\n");
}

printf("ERROR 1: %s\n",strerror(errno));

char *execArgs[] = { "cpdir", "-R", copy_path,paste_path, NULL };

printf("Copy from %s to %s\n",copy_path,paste_path);

if(pid == 0) {

printf("I'm gonna exec\n");
execvp("cpdir", execArgs);
printf("I should never get here \n");

}

else {
printf("I'm the father, going to return\n");
printf("ERROR 2: %s\n",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

最佳答案

输出缓冲可能吞噬了子进程的输出。在 exec 之前尝试 fflush(stdout)

编辑: fork 后,您应该看到两个 ERROR 1 和两个 Copy from 行。您没有看到任何子进程输出。

关于c - 来自 fork 的 Pid 不为 0 或小于 0 (minix),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27660965/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com