子进程崩溃父进程如何得知并重启子进程
发布时间:2010-11-30 16:00:14来源:红联作者:skywing
大家好,我有一个程序,主进程中fork出两个进程,子进程循环执行任务, 我想做一个控制,在子进程崩溃时,让父进程获取子进程一个信号,并重启一个子进程,保证一直有两个子进程在工作。
我使用了signal(SIGCLD, sig_process);
sig_process函数如下:
static void sig_process(int signum)
{
int pid_t,pstatus,acsid;
switch( signum )
{
case SIGCHLD:
pid_t = wait( &pstatus );
if(pid_t > 0)
{
for( acsid = 1 ; acsid <= SHMINFO->EPOLLNUM ;acsid++ )
{
printf("SHMINFO->SU_EPOLLS[%d-1].pid=%d,pid_t=%d\n",acsid,SHMINFO->SU_EPOLLS[acsid-1].pid,pid_t);
if( SHMINFO->SU_EPOLLS[acsid-1].pid == pid_t )
{
printf("set the acs%d state\n",acsid);
P_Action(SEM_I_ID, 0);