1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
<?php
pcntl_signal(SIGINT,function ($signal){
fprintf(STDOUT,"pid %d 接收到信号 %d\n",posix_getpid(),$signal);
});
pcntl_signal(SIGALRM,function ($signal){
fprintf(STDOUT,"pid %d 接收到信号 %d\n",posix_getpid(),$signal);
});
$mapPid = [];
$pid = pcntl_fork();
if($pid > 0){
$mapPid[] = $pid;
$pid = pcntl_fork();
if($pid > 0){
$mapPid[] = $pid;
while(1){
pcntl_signal_dispatch();
// posix_kill($mapPid[0],SIGINT);
// 如果参数为0,会向进程组中的所有进程发送信号
// posix_kill(0,SIGINT);
// 如果参数为 -1,测试会把虚拟机关闭,断开连接
// posix_kill(-1,SIGINT);
// 如果参数为 1,测试会把虚拟机关系统重新启动,1 为系统进程
posix_kill(1,SIGINT);
pcntl_alarm(2);
sleep(2);
}
}
exit(0);
}
while(1){
pcntl_signal_dispatch();
fprintf(STDOUT,"pid %d, ppid %d, gid %d \n",posix_getpid(),posix_getppid(),posix_getpgrp());
sleep(1);
}
|