linux编程wait(0)放在最后一句有什么用

一个很简单的程序,wait(0)的作用我也知道,就是把调用它的进程挂起,直到有别的进程终止它再开始执行。
#include <stdio.h>

main()
{
int p1,p2;

p1=fork();
if(p1==0)
putchar('b');
else
{
p2=fork();
if(p2==0)
putchar('c');
else
putchar('a');
}
wait(0);
}
这一段把wait(0)放在最后,从结果上看是起作用了,但不知道为什么会起作用,执行到wait(0)的时候后面已经没有程序了啊

wait是等待,等待前面的所有子进程全部执行完才继续。这里p1=fork(),p2=fork()不是有调用到fork子进程吗
写这个的目的是避免上面的还没执行完就开始执行后续的程序了。
我举个例子,你在执行备份后删除原文件操作,备份还没进行完,程序就开始删除了。这样就会出错了。
当然你这里后续没有操作,wait只是在等待上面的全部做完然后退出整个程序。追问

那这个wiat(0)为字符'a'何时输出有影响吗?

追答

没有,他的作用是上面的全部输出完才进行后面的操作

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-23
假如你有五个进程同时工作,主进程什么都不干,就负责监控这五个进程有哪个是否退出,一旦有一个退出了,wait就会检测到,那么把剩下的四个全部杀死,从新启动这五个进程,这是一种应用的场景
第2个回答  2015-01-31
wait(0)一般是父进程用来等待子进程用的,用来防止子进程成为僵尸进程,0表示父进程不关心子进程的终止状态
相似回答