900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 进程wait()与waitpid()

进程wait()与waitpid()

时间:2023-02-01 23:59:48

相关推荐

进程wait()与waitpid()

wait() 与 waitpid()都是在linux 保证进程间异步中通信的常用函数

pit_t wait(int *status);pit waitpid(pid_t pid, int *status, int options);

函数返回值为本次wait子进程的pid

当所wait的进程的pid不存在时,其返回值为 -1 而不是保持阻塞

status 为输出型参数传入指针,运行后返回的为子进程的终止状态

并通过WIFEXITED、WIFSIGNALED、WEXITSTATUS这几个宏用来获取子进程的退出状态。

WIFEXITED宏用来判断子进程是否正常终止(return、exit、_exit退出)

WIFSIGNALED宏用来判断子进程是否非正常终止(被信号所终止)

WEXITSTATUS宏用来得到正常终止情况下的进程返回值的。

WIFEXITED(status);

pid 可以等待指定的pid的返回

waitpid(-1, status, 0); //任意pid 阻塞式

基本功能相同,都是在父进程中调用等待子进程返回

其依赖于子进程结束时,系统向其父进程发送SIGCHILD信号,wait就释放对父进程的阻塞

父进程调用wait函数后阻塞父进程被SIGCHILD信号唤醒然后去回收僵尸子进程在子进程结束,而父进程还未回收其PCB(进程控制块 8KB)的内存时其为僵死态若父进程没有任何子进程则wait返回错误

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。