Unix信号在PHP中的应用(一)

信号是中断机制的基础。信号对于进程而言是随机出现的。对于信号的处理有三个动作:忽略此信号;捕捉信号(执行特定的函数);执行系统的默认动作。在此说明的是,不能捕捉或者忽略SIGKILL和SIGSTOP信号。

常用的信号说明

SIGCHLD 在一个进程终止或停止时,将SIGCHLD信号发送给其父进程。按系统默认会忽略此信号。如果父进程希望被告知其子进程的这种状态改变,则应捕捉此信号。信号捕捉函数中通常调用一种wait函数取得子进程ID和终止状态

SIGHUP  如果终端接口检查到一个连接断开,则将此信号发送给该终端相关的控制进程。远程的终端断开,进程接受此信号,默认终止。

SIGINT 当用户按中断键(一般是Ctrl+C)时,终端驱动程序产生此信号并送至前台进程组中的每一个进程。

SIGQUIT 当用户在终端上按退出键(关闭终端),产生此信号,并送至前台进程组中的所有进程。

SIGTERM 由kill命令发送的系统默认终止信号。 (kill 进程ID)

下面来举例说明。

SIG_IGN 是忽略信号的标志。上面的程序在运行时,关闭,中断,或者终止,设置默认的kill命令都不会关闭此进程。已经把终止信号忽略掉了。除非用kill -9 命令强制关闭。此命令产生的是SIGKILL信号。

在运行脚本的时候,我们经常会用nohup来保持当终端关闭时,进程继续运行。通过上面忽略信号的做法也可以做到。

此条目发表在PHP分类目录。将固定链接加入收藏夹。

发表评论

邮箱地址不会被公开。