Creating process and do actions with signals

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I have this script testing.php that I run on a Linux machine thru the command line. In the end of the file you see two cases. One where it is just having a while(true) loop doing nothing, and the other calling an other script that is doing nothing but doesn't exit. When I send SIGTERM for the first case it does what it is supposed to do, but when sending SIGTERM to the other case it doesn't work.

Might it be so that the signals cannot be handled if the script is busy creating its own process or similar? Because when executing it with case two doesn't leave the exec() part until the other script exits, and it will never exits.

I try to send the signal with:
# kill -s SIGTERM 24574

The "ps -ef | grep testing.php | grep -v grep" looks like this as example:
500      24574     1  0 13:50 ?        00:00:00 /usr/bin/php ./testing.php

Best regards,
Peter Lauri

Code:

+++++++++++++++++++++++++++++++++++++++++++++++++++++

#!/usr/bin/php
<?php

declare(ticks = 1);

$pid = pcntl_fork();
if ($pid == -1) {
     die("could not fork");
} else if ($pid) {
     exit(); // we are the parent
} else {
     // we are the child
}

// detatch from the controlling terminal
if (!posix_setsid()) {
    die("could not detach from terminal");
}

function sig_handle($signo) {
	switch($signo) {
		case SIGTERM:
			echo "I got the SIGTERM signal:".$signo."\n";
		break;
		case SIGCHLD:
			echo "I got the SIGCHLD signal:".$signo."\n";
		break;
		case SIGINT:
			echo "I got the SIGINT signal:".$signo."\n";
		break;
	}
}

pcntl_signal(SIGTERM, "sig_handle");
pcntl_signal(SIGCHLD, "sig_handle");
pcntl_signal(SIGINT, "sig_handle");

//Case 1 with just a while loop is working
//while(true) {
//
//}

//Case 2 when executing the script testing2.php that also do a
//infinite while loop does not work
//exec("./testing2.php");

?>

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux