gr_wait.c

来自「SIP 1.5.0源代码」· C语言 代码 · 共 54 行

C
54
字号
/* * Program:	UNIX Grim PID Reaper -- wait() version * * Author:	Mark Crispin *		Networks and Distributed Computing *		Computing & Communications *		University of Washington *		Administration Building, AG-44 *		Seattle, WA  98195 *		Internet: MRC@CAC.Washington.EDU * * Date:	30 November 1993 * Last Edited:	9 October 1995 * * Copyright 1995 by the University of Washington * *  Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appears in all copies and that both the * above copyright notice and this permission notice appear in supporting * documentation, and that the name of the University of Washington not be * used in advertising or publicity pertaining to distribution of the software * without specific, written prior permission.  This software is made available * "as is", and * THE UNIVERSITY OF WASHINGTON DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, * WITH REGARD TO THIS SOFTWARE, INCLUDING WITHOUT LIMITATION ALL IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, AND IN * NO EVENT SHALL THE UNIVERSITY OF WASHINGTON BE LIABLE FOR ANY SPECIAL, * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, TORT * (INCLUDING NEGLIGENCE) OR STRICT LIABILITY, ARISING OUT OF OR IN CONNECTION * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * */ /* Grim PID reaper * Accepts: process ID *	    kill request flag *	    status return value */void grim_pid_reap_status (int pid,int killreq,void *status){  int r;  if (killreq) {    kill (pid,SIGHUP);		/* kill if not already dead */    alarm (10);			/* in case we get hosed */    while (((r = wait (NIL)) != pid) &&	   ((r > 0) || ((errno != ECHILD) && (errno != EINTR))));    alarm (0);			/* cancel the alarm */  }  else while (((r = wait (status)) != pid) && ((r > 0) || (errno != ECHILD)));}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?