mirror of
https://github.com/php/php-src.git
synced 2024-12-03 23:05:57 +08:00
261a60a360
@ - Greatly improved performance, by switching the signal callback mechanism @ to use ticks @ - Implemented object signal callback ability by using array($obj, $method) @ - Added a restart parameter to pcntl_signal, which allows you to disable @ the default of system call restarting Changed callback hash table to be initialized and destroyed per reqeust (allows the ability to use request life zvals as handles) Nuked warnings Modified test script to adjust to new ticks backend Some slight WS fixes
47 lines
1.7 KiB
C
47 lines
1.7 KiB
C
/*
|
|
+----------------------------------------------------------------------+
|
|
| PHP Version 4 |
|
|
+----------------------------------------------------------------------+
|
|
| Copyright (c) 1997-2002 The PHP Group |
|
|
+----------------------------------------------------------------------+
|
|
| This source file is subject to version 2.02 of the PHP license, |
|
|
| that is bundled with this package in the file LICENSE, and is |
|
|
| available at through the world-wide-web at |
|
|
| http://www.php.net/license/2_02.txt. |
|
|
| If you did not receive a copy of the PHP license and are unable to |
|
|
| obtain it through the world-wide-web, please send a note to |
|
|
| license@php.net so we can mail you a copy immediately. |
|
|
+----------------------------------------------------------------------+
|
|
| Author: Jason Greene <jason@inetgurus.net> |
|
|
+----------------------------------------------------------------------+
|
|
*/
|
|
|
|
/* $Id$ */
|
|
|
|
#include "php_signal.h"
|
|
|
|
/* php_signal using sigaction is derrived from Advanced Programing
|
|
* in the Unix Environment by W. Richard Stevens p 298. */
|
|
Sigfunc *php_signal(int signo, Sigfunc *func, int restart)
|
|
{
|
|
|
|
struct sigaction act,oact;
|
|
act.sa_handler = func;
|
|
sigemptyset(&act.sa_mask);
|
|
act.sa_flags = 0;
|
|
if (signo == SIGALRM || (! restart)) {
|
|
#ifdef SA_INTERRUPT
|
|
act.sa_flags |= SA_INTERRUPT; /* SunOS */
|
|
#endif
|
|
} else {
|
|
#ifdef SA_RESTART
|
|
act.sa_flags |= SA_RESTART; /* SVR4, 4.3+BSD */
|
|
#endif
|
|
}
|
|
if (sigaction(signo, &act, &oact) < 0)
|
|
return SIG_ERR;
|
|
|
|
return oact.sa_handler;
|
|
}
|
|
|