while(((child=wait(&status))==-1)&(errno==EINTR)); 作用
「已注销」 2009-05-14 04:41:54 网上的linux创新新进程的例子中看到这一句, 有什么作用呢?
根据我自己的想法:
1.正常情况下, wait返回子进程id, 也就是 child=wait(&status))==-1 返回0, 对于 errno==EINTR在这种情况下 也是返回0 .
2.如果没有子进程wait直接返回0, 情形同上
3.如果是发生错误, 则wait返回-1, 则child=wait(&status))==-1 为1, 而这种时候是否一定是由于系统调用失败造成的呢(EINTR).如果是这样调用也没有看到任何的作用. 如果不是,那是什么呢?
4.如果两件事都为真, 则是中断事件的发生导致wait调用失败, 在这种情况下继续调用是否是因为在这种情况下可以继续调用wait去等待直到wait调用成功? 另外, 是否只有在中断情形下这么做? 还有什么原因会导致wait失败呢?
不知道是否描述清楚.谢谢.