Linux fork 后 wait 获取子进程结束的状态示例

使用 fork 后,可能需要获取 fork 的进程的运行状况,,比如有没有异常、崩溃。wait 在 man 中关键的描述如下:All of these system calls are used to wait for state changes in a child of the calling process, and obtain information about the child whose state has changed. A state change is considered to be: the child terminated; the child was stopped by a signal; or the child was resumed by a signal.

示例代码:

<unistd.h>main(void){pid_t pid;int status;printf("before fork\n");fflush(stdout);if ( (pid = fork()) < 0){printf("fork error\n");}else if (pid == 0){printf("after fork, child\n");}wait(&status);if (WIFEXITED(status)){printf("normal termination, exitstatus = %d\n", WEXITSTATUS(status));}else if (WIFSIGNALED(status)){printf("abnormal termination, signalstatus = %d\n", WTERMSIG(status), #ifdef WCOREDUMPWCOREDUMP(status)?"(core file generated)":""); #else "");#endif}else if (WIFSTOPPED(status)){printf("child stopped, signal number = %d\n", WSTOPSIG(status));}printf("after fork, parent\n");return 0;}

运行效果:

wait status

版权声明:本文为博主原创文章,未经博主允许不得转载。

思念是一种幸福的忧伤,是一种甜蜜的惆怅,是一种温馨的痛苦;

Linux fork 后 wait 获取子进程结束的状态示例

相关文章:

你感兴趣的文章:

标签云: