Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有人能告诉我使用fork()系统调用(编程C)的程序有什么问题吗_C_Linux_Excel_Unix_Fork - Fatal编程技术网

有人能告诉我使用fork()系统调用(编程C)的程序有什么问题吗

有人能告诉我使用fork()系统调用(编程C)的程序有什么问题吗,c,linux,excel,unix,fork,C,Linux,Excel,Unix,Fork,在这个程序中,我试图使用fork函数来创建6个子进程并执行executionnode函数,但我觉得我的输出有问题! 我的代码或系统调用发生了什么? 我有一个这样的程序 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <unistd.h> #include <sys/types.h> int ex

在这个程序中,我试图使用fork函数来创建6个子进程并执行executionnode函数,但我觉得我的输出有问题! 我的代码或系统调用发生了什么? 我有一个这样的程序

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>



int executionnode(int i);

int main(){
pid_t childpid;
     int i;
     int row=6;
     for(i=0;i<row;i++)
     {   childpid=fork();
         if(childpid==0)
            continue;
         else if (childpid>0)
            executionnode(i);

         else {
           perror("something wrong");
            exit(1);
          }
      }


}


int executionnode(int i){
   sleep(i);
   printf("hello, I am process:%ld\n",(long)getpid());
   char *execArgs[] = { "echo", "Hello, World!", NULL };
   execvp("echo", execArgs);

}
我发现我的输出甚至没有完成,这意味着我的程序的执行还没有完成,但是lixx3527@tiandiao123:~/Desktop/pa1 release$已提前出现在终端中。 我的代码或系统调用发生了什么? 有人能帮我解释一下吗?我是说为什么lixx3527@tiandiao123:~/Desktop/pa1 release$在程序完成所有执行之前出现?
谢谢大家!

家长们跑得很快,把孩子们甩在后面。然后退出,shell打印一个提示。然后其他子级运行并打印数据。看起来在shell打印提示之前,一个孩子能够打印,而其他孩子则不能。如果您希望父进程等待子进程完成,则有一个名为wait的函数可以方便地完成此操作。

应该注意,wait可能会重复,它只释放一个僵尸子进程。为了让所有子进程首先完成,请查看waitpid并将其用于创建的每个子进程。
/*
hello, I am process:3226
Hello, World!
lixx3527@tiandiao123:~/Desktop/pa1-release$ hello, I am process:3227
Hello, World!
hello, I am process:3228
Hello, World!
hello, I am process:3229
Hello, World!
hello, I am process:3230
Hello, World!
hello, I am process:3231
Hello, World!
*/