使用fork执行3个命令

时间:2018-04-17 17:22:23

标签: fork

简而言之,我需要使用mkdir执行3个命令chdirpwdfork

情况:我有一个父进程,它会分配到执行mkdir的子进程。

问题:该子进程是否会成为执行chdir的另一个子进程的父进程?

我真的希望你理解我的问题。

1 个答案:

答案 0 :(得分:0)

该子进程是否会成为执行chdir的另一个子进程的父进程?

这取决于你如何编写你的代码。如果父母创建了3个孩子,并且每个孩子在执行命令后退出,那么孩子就不能成为父母。

示例:

pid_t kid;
int I = 0;
int status;
for (I = 0; I< 3; I++) {
       kid = fork();
       if (-1 == kid) {
            perror("fork");
            exit(1);
       } else if (0 == kid) {
           // execute command
            exit(0);
      }
}
while (wait(&status) != -1)
exit(0);

如果父母创建了一个孩子并等待它。孩子执行一个命令,然后创建另一个孩子,然后孩子的大孩子可以成为父母。

示例:

pid_t kid;
int I = 0;
int status;
int last_child = 2;
for (I = 0; I < 3; I++) {
       kid = fork();
       if (-1 == kid) {
            perror("fork");
            exit(1);
       } else if (0 == kid) {
           // execute command
           if (I == last_child)
            exit(0);
      }
      // parent will wait here
      wait(&status);
}
exit(0);

希望它有所帮助。