原创 wait调用

2009-2-8 00:43 2169 3 3 分类: MCU/ 嵌入式

          一、如果我们有很多个子进程,那么,当任何一个子进程结束的时候wait都会返回。如果我们像等待其中某一个特定的进程结束(假定我们知道那个进程的进程ID),在老版本的Unix系统上,我们能够调用wait函数,并且比较它返回的进程ID和我们想得到的进程ID。如果这个结束的进程不是我们期望的进程,那么我们不得不保存这个进程ID和结束状态,然后再一次调用wait函数。我们需要继续做这样的事情直到我们期望的进程结束。下一次我们我想要等待一个特定进程的时候,我们需要借助已经结束的进程列表中(这就是我们为什么要记录那些进程ID和结束状态的原因)判断我们是否已经等待过这个进程了,如果没有我们要再一次的调用wait函数。在时下流行的一些Unix系统中,我们可以使用waitpid来完成这个工作,相比较而言方便一些。


       二、wait(等待子进程中断或结束)  
       相关函数  
       waitpid,fork  
       表头文件  
       #include<sys/types.h>  
       #include<sys/wait.h>  
       定义函数  
       pid_t   wait   (int   *   status);  
       函数说明   
        wait()会暂时停止目前进程的执行,直到有信号来到或子进程结束。如果在调用wait()时子进程已经结束,则wait()会立即返回子进程结束状态值。子进程的结束状态值会由参数status 返回,而子进程的进程识别码也会一快返回。如果不在意结束状态值,则参数status可以设成NULL。子进程的结束状态值请参考waitpid()。   
      返回值   
      如果执行成功则返回子进程识别码(PID),如果有错误发生则返回-1。失败原因存于errno中。   
   

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /1 下一条