From 8b43f3222ec7a2956568cd6da055afac89fd3b87 Mon Sep 17 00:00:00 2001 From: Jason Greene Date: Tue, 12 Jun 2001 08:54:25 +0000 Subject: @Added new experimental module pcntl (Process Control) (Jason) Initial Import --- ext/pcntl/php_signal.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 ext/pcntl/php_signal.c (limited to 'ext/pcntl/php_signal.c') diff --git a/ext/pcntl/php_signal.c b/ext/pcntl/php_signal.c new file mode 100644 index 0000000000..a47c39bd77 --- /dev/null +++ b/ext/pcntl/php_signal.c @@ -0,0 +1,45 @@ + +/* + +----------------------------------------------------------------------+ + | PHP version 4.0 | + +----------------------------------------------------------------------+ + | Copyright (c) 1997, 1998, 1999, 2000, 2001 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. | + +----------------------------------------------------------------------+ + | Authors: Jason Greene | + +----------------------------------------------------------------------+ +*/ + +#include "php_signal.h" + +/* php_signal using sigaction is taken verbatim from Advanced Programing + * in the Unix Environment by W. Richard Stevens p 298. */ +Sigfunc *php_signal(int signo, Sigfunc *func) +{ + + struct sigaction act,oact; + act.sa_handler = func; + sigemptyset(&act.sa_mask); + act.sa_flags = 0; + if (signo == SIGALRM) { +#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; +} + -- cgit v1.2.1