summaryrefslogtreecommitdiff
path: root/ext/pcntl/test-pcntl.php
diff options
context:
space:
mode:
Diffstat (limited to 'ext/pcntl/test-pcntl.php')
-rwxr-xr-xext/pcntl/test-pcntl.php40
1 files changed, 40 insertions, 0 deletions
diff --git a/ext/pcntl/test-pcntl.php b/ext/pcntl/test-pcntl.php
new file mode 100755
index 0000000..01d44fc
--- /dev/null
+++ b/ext/pcntl/test-pcntl.php
@@ -0,0 +1,40 @@
+#!../../php -q
+<?
+
+declare(ticks=1);
+
+function alarm_handle($signal){
+ if ($signal==SIGALRM) print "Child: Caught SIGALRM!!!\n";
+}
+
+function usr1_handle($signal){
+ if ($signal==SIGUSR1) print "Child: Caught SIGUSR1!!!\n";
+}
+
+print "This test will demonstrate a fork followed by ipc via signals.\n";
+
+$pid=pcntl_fork();
+if ($pid==0) {
+ pcntl_signal(SIGUSR1, "usr1_handle");
+ pcntl_signal(SIGALRM, "alarm_handle");
+ print "Child: Waiting for alarm.....\n";
+ sleep(100);
+ print "Child: Waiting for usr1......\n";
+ sleep(100);
+ print "Child: Resetting Alarm handler to Ignore....\n";
+ pcntl_signal(SIGALRM, SIG_IGN);
+ print "Child: sleeping for 10 seconds....\n";
+ sleep(10);
+ print "Done\n";
+} else {
+ print "Parent: Waiting 10 seconds....\n";
+ sleep(10);
+ print "Parent: Sending SIGALRM to Child\n";
+ posix_kill($pid,SIGALRM);
+ sleep(1);
+ print "Parent: Senging SIGUSR1 to Child\n";
+ posix_kill($pid,SIGUSR1);
+ sleep(2);
+ print "Parent: Sending SIGALRM to Child\n";
+ pcntl_waitpid($pid, &$status, $options);
+}