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); (编辑:开发网_开封站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |