当前位置: 首页 > Linux

Linux进程-常用信号

时间:2023-04-06 21:35:41 Linux

在使用swoole进行进程相关编程的时候,经常会遇到进程信号的问题。这里有一个信号列表,可以整理查看[vagrant@localhosttmp]$kill-l1)SIGHUP2)SIGINT3)SIGQUIT4)SIGILL5)SIGTRAP6)SIGABRT7)SIGBUS8)SIGFPE9)SIGKILL10)sigusr111)sigsegv12)sigusr213)sigpipe14)sigalrm15)sigterm16)sigstkopflt17)sigChld19)sigcont)sigtstp21)sigttp21)sigtttin)sigttin22)222)sigttou23)sigurg24)sigxig27sigxccpu27)30)SIGPWR31)SIGSYS34)SIGRTMIN35)SIGRTMIN+136)SIG37)SIGRTMIN+)SIGRTMIN+439)SIGRTMIN+540)SIGRTMIN+641)SIGRTMIN+742)SIGRTMIN+843)SIGRTMIN+944)SIGRTMIN+1045)SIGRTMIN+1146)SIGRTMIN+1247)SIGRTMIN+1348)SIGRTMIN+1449)SIGRTMIN+1550)SIGRTMAX-1451)SIGRTMAX-1352)SIGRTMAX-1253)SIGRTMAX-1154)SIGRTMAX-1055)SIGRTMAX-956)SIGRTMAX-857)SIGRTMAX-758)SIGRTMAX-659)SIGRTMAX-560)SIGRTMAX-461)SIGRTMAX-362)SIGRTMAX-263)SIGRTMAX-164)SIGRTMAX在swoole中使用signal进行异步信号监控,特别注意不能被屏蔽的程序用户,否则会导致注册的监听回调函数无法调度。//swoole用于设置异步信号监听swoole\Process::signal(int$signo,callable$callback):bool//swoole是用于向进程发送信号defaultSIGTERMSwoole\Process::kill(int$pid,int$signo=SIGTERM):bool参考https://wiki.swoole.com/#/oth...Linux信号列表SIGCHLD(17)当子进程退出时,会向其父进程发送SIGCHLD信号Swoole\Process::signal(SIGCHLD,function($sig){//必须为false,非阻塞模式while($ret=Swoole\Process::wait(false)){echo"PID={$ret['pid']}\n";}});swoole监听SIGCHLD信号,设置回调函数对正常结束的子进程SIGTERM(15)信号进行非阻塞回收,kill命令默认为该信号。//默认发送信号SIGTERMSwoole\Process::kill(int$pid,int$signo=SIGTERM):boolSIGKILL(9)强制进程退出。通常,使用SIGTERM。SIGKILL会导致进程立即退出,不会做相关清理工作SIGKILL和SIGSTOP一般不会被程序捕获(参考goos.signal包)SIGINT(2)键盘终止信号相当于输出Ctrl+C快捷键Swoole\Process::signal(SIGINT,function(){echo"INT\n";});Swoole\Timer::tick(5000,function(){});Swoole\Event::wait();SIGHUP(1)当用户终端连接结束(正常和异常)时发出,通知统一会话中的每个作业。如果程序没有捕获到该信号,则默认退出当前进程。Swoole\Process::signal(SIGHUP,function($sig){$myPid=getmypid();//需要手动杀进程Swoole\Process::kill($myPid);});SIGUSR1(10)用户使用SetcustomsignalSIGTSTP(20)设置进程中断(进程挂起),shell中的Ctrl+Z实际上是给程序发送SIGTSTP信号,用户挂起程序,放到后台

最新推荐
猜你喜欢