Linux下利用fork()创建子进程并使父进程等待子进程结束

时间:2021-08-02 17:34:21
int status;
pid_t t = fork();
if(t){
    waitpid(t, &status, 0);
}else{
    system("vi temp.txt");
    exit(0);
}
//父进程和子进程均执行完毕后继续执行下去
 
分析过程:
if 和 else 还是选择分支。 
主要的原因是, fork() 函数调用一次,返回两次。两次返回的区别是:子进程的返回值是0,父进程返回值为新子进程的进程ID。返回后,父进程执行waitpid(t, &status, 0)等待子进程结束,而子进程进入另一个分支执行system("vi temp.txt");exit(0);,父子间并不冲突,可以形容这段代码父进程与子进程都执行了一次判断。