1--TEST-- 2Test pcntl wait functionality 3--SKIPIF-- 4<?php 5 if (!extension_loaded("pcntl")) print "skip"; 6 elseif (!function_exists("posix_kill")) print "skip posix_kill() not available"; 7?> 8--FILE-- 9<?php 10function test_exit_waits(){ 11 print "\n\nTesting pcntl_wifexited and wexitstatus...."; 12 13 $pid=pcntl_fork(); 14 if ($pid==0) { 15 sleep(1); 16 exit(-1); 17 } else { 18 $options=0; 19 pcntl_waitpid($pid, $status, $options); 20 if ( pcntl_wifexited($status) ) print "\nExited With: ". pcntl_wexitstatus($status); 21 } 22} 23 24function test_exit_signal(){ 25 print "\n\nTesting pcntl_wifsignaled...."; 26 27 $pid=pcntl_fork(); 28 29 if ($pid==0) { 30 sleep(10); 31 exit; 32 } else { 33 $options=0; 34 posix_kill($pid, SIGTERM); 35 pcntl_waitpid($pid, $status, $options); 36 if ( pcntl_wifsignaled($status) ) { 37 $signal_print=pcntl_wtermsig($status); 38 if ($signal_print==SIGTERM) $signal_print="SIGTERM"; 39 print "\nProcess was terminated by signal : ". $signal_print; 40 } 41 42 } 43} 44 45 46function test_stop_signal(){ 47 print "\n\nTesting pcntl_wifstopped and pcntl_wstopsig...."; 48 49 $pid=pcntl_fork(); 50 51 if ($pid==0) { 52 sleep(1); 53 exit; 54 } else { 55 $options=WUNTRACED; 56 posix_kill($pid, SIGSTOP); 57 pcntl_waitpid($pid, $status, $options); 58 if ( pcntl_wifstopped($status) ) { 59 $signal_print=pcntl_wstopsig($status); 60 if ($signal_print==SIGSTOP) $signal_print="SIGSTOP"; 61 print "\nProcess was stoped by signal : ". $signal_print; 62 } 63 posix_kill($pid, SIGCONT); 64 } 65} 66 67print "Staring wait.h tests...."; 68test_exit_waits(); 69test_exit_signal(); 70test_stop_signal(); 71?> 72--EXPECT-- 73Staring wait.h tests.... 74 75Testing pcntl_wifexited and wexitstatus.... 76Exited With: 255 77 78Testing pcntl_wifsignaled.... 79Process was terminated by signal : SIGTERM 80 81Testing pcntl_wifstopped and pcntl_wstopsig.... 82Process was stoped by signal : SIGSTOP 83