加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

php中信号处理函数有哪几点?怎样做信号处理操作?

发布时间:2022-04-14 13:30:07 所属栏目:语言 来源:互联网
导读:关于php中的信号处理器和信号处理操作,很多新手不是很清楚,这篇文章小编就给大家介绍一些关于php的信号说明以及信号处理操作,感兴趣的朋友可以看一看。 首先我们需要了解几个函数 pcntl_signal 安装信号处理器,也就是当指定信号发生时,调用函数。 pcntl
       关于php中的信号处理器和信号处理操作,很多新手不是很清楚,这篇文章小编就给大家介绍一些关于php的信号说明以及信号处理操作,感兴趣的朋友可以看一看。
 
       首先我们需要了解几个函数
 
       pcntl_signal   安装信号处理器,也就是当指定信号发生时,调用函数。
       pcntl_alarm   指定秒数后向进程发送SIGALRM信号。
       posix_getpid 返回当前进程id
       posix_kill       给指定进程发送信号
 
       一些常用的信号说明
 
       SIGHUP
       本信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制进程结束时,通知同一session内的各个作业, 这时它们与控制终端不再关联。
 
       SIGINT
       程序终止(interrupt)信号, 在用户键入INTR字符(通常是Ctrl-C)时发出。
 
       SIGQUIT
       和SIGINT类似,但由QUIT字符(通常是Ctrl-/)来控制;进程在因收到SIGQUIT退出时会产生core文件,在这个意义上类似于一个程序错误信号。
 
       SIGKILL
       用来立即结束程序的运行。本信号不能被阻塞、处理和忽略。如果管理员发现某个进程终止不了,可尝试发送这个信号。
 
       SIGTERM
       程序结束(terminate)信号, 与SIGKILL不同的是该信号可以被阻塞和处理。通常用来要求程序自己正常退出,shell命令kill缺省产生这个信号。如果进程终止不了,我们才会尝试SIGKILL。
 
       SIGUSR1
       留给用户使用
 
       SIGUSR2
       留给用户使用
 
       SIGALRM
       时钟定时信号, 计算的是实际的时间或时钟时间。alarm函数使用该信号。
 
       SIGCHLD
       子进程结束时, 父进程会收到这个信号。
 
       例1:
 
<?php
declare(ticks = 1);
//信号处理函数
function sig_func() {
  echo "child exit rn";
}
//设置信号处理器
pcntl_signal(SIGCHLD, 'sig_func');
$pid = pcntl_fork();
if($pid == -1) {
  die('fork error');
} else if ($pid) {
  pcntl_wait($status);
} else {
  echo "child... rn";
  exit;
 
//设置信号处理器
pcntl_signal(SIGCHLD, 'sig_func');
//设置信号处理器
pcntl_signal(SIGTERM, 'sig_func');
$pid = pcntl_fork();
if($pid == -1) {
  die('fork error');
} else if ($pid) {
  pcntl_wait($status);
} else {
  sleep(3);
  echo "child rn";
  sleep(3);
  posix_kill(getmypid(), SIGTERM);

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读