??
1 wait/waitpid
僵尸进程:
子进程退出,父进程没有回收子进程资源(PCB),则子进程变成僵尸进程
孤儿进程:
父进程先于子进程结束,则子进程成为孤儿进程,子进程的父进程成为1号
进程init进程,称为init进程领养孤儿进程
2依赖的头文件
#include
#include
3函数声明
pid_t wait(int...
分类:
其他好文 时间:
2014-09-21 01:48:29
阅读次数:
418
wait函数 当进程正常或异常终止时,内核就向其父进程发送SICHLD信号。父进程可以选择忽略该信号(系统默认该动作),或者提供一个该信号发生时即被调用执行的信号处理程序。 调用wait或waitpid的进程时: ·如果其素有子进程都还在运行,则阻塞。 ·如果一个子进程已终止,正等待父进程获...
分类:
其他好文 时间:
2014-09-11 15:03:42
阅读次数:
225
僵尸进程(zombie process):在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他, 那么他将变成一个僵尸进程. 但是如果该进程的父进程已经先结束了,那么该进程就不会变成僵尸进程, 因为每个进程结束的时候,系统都会扫描当前系统中运行的所有进程,...
分类:
其他好文 时间:
2014-08-31 17:09:41
阅读次数:
205
19:22:012014-08-27引言:以前对wait waitpid 以及exit这几个函数只是大致上了解,但是看REDIS的AOF和RDB 2种持久化时 均要处理子进程运行完成退出和父进程需要做的什么事情,所以特定看了UNIX环境编程和LINUX系统编程这2本书 重新梳理下整个要点。内容:一般...
分类:
系统相关 时间:
2014-08-27 23:23:18
阅读次数:
338
当一个进程正常或异常终止的时候,内核就像其父进程发送SIGCHLD信号,因为子进程是个异步事件,所以这种信号也是内核给那个父进程发的异步通知。父进程可以选择忽略该信号,或者提供一个该信号发生时即被调用执行的函数。对于这种信号的系统默认动作是忽略它。调用wait或waitpid的进程可能会发生什么情况...
分类:
编程语言 时间:
2014-08-18 10:29:54
阅读次数:
228
第五章的内容,实现一个echo服务器和对应的客户端,主要收获:0. TCP socket编程主要基本步骤1. SIGCHLD信号含义(子进程退出时向父进程发送,提醒父进程对其状态信息进行一个获取),waitpid 和 wait在使用上的差异,前者可以配置参数设定为非阻塞方式调用,更加灵活。2. 信号...
分类:
系统相关 时间:
2014-08-17 15:26:12
阅读次数:
337
SIGCHILD只是在子进程退出的时候发送给父进程的一个信号值,这是一种异步通知父进程的方式.父进程可以捕获,忽略这个信号,默认动作是忽略此信号.常用的使用方式是,当SIGCHILD信号发生时候,主进程在SIGCHILD的信号处理函数中调用waitpid or wait来回收子进程的结束状态。但需要...
分类:
其他好文 时间:
2014-08-09 21:04:39
阅读次数:
180
当一个进程终止时,内核就向其父进程发送SIGCHLD信号。因为子进程终止是个异步事件,所以这种信号也是内核向父进程发的异步通知。父进程可以选择忽略该信号,或者提供一个该信号发生时即被调用执行的函数。对于这种信号的系统默认动作是忽略它。调用wait或waitpid的进程发生的情况如下:1.如果所有子进...
分类:
其他好文 时间:
2014-07-29 10:38:06
阅读次数:
231
基本概念:在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束。当一个 进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态。...
分类:
其他好文 时间:
2014-07-28 23:46:24
阅读次数:
355
if( (so_pid=fork())
#include
#include
#include
#include
#include
static pid_t so_pid;
static void chld_wait( int signo )
{
waitpid( so_pid, NULL, 0 );
fprintf(stderr, "父进程[%d]已成...
分类:
其他好文 时间:
2014-06-26 07:15:33
阅读次数:
179