linux进程退出回调,linux进程常见信号

使用swoole进行进程相关编程时,经常会遇到关于进程信号的问题,在这里做一个整理

查看信号列表[vagrant@localhost tmp]$ kill -l

1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP

6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1

11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM

16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP

21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ

26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR

31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3

38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8

43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13

48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12

53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7

58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2

63) SIGRTMAX-1 64) SIGRTMAX

swoole 中使用signal进行异步信号监听,特别注意不能用户阻塞的程序中,不然会导致注册的监听回调函数得不到调度.// swoole用来设置异步信号监听

Swoole\Process::signal(int $signo, callable $callback): bool// swoole用来向进程发送信号 默认SIGTERM

Swoole\Process::kill(int $pid, int $signo = SIGTERM): bool

参考

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命令默认信号.// 默认发送信号 SIGTERM

Swoole\Process::kill(int $pid, int $signo = SIGTERM): bool

SIGKILL(9)

强制进程退出。一般情况下使用SIGTERM即可。SIGKILL会导致进程立刻退出,不会做相关清理性工作

SIGINT(2)

键盘终止信号 相当于输出 Ctrl+C 快捷键Swoole\Process::signal(SIGINT, function () {

echo "INT\n";

});

Swoole\Timer::tick(5000, function () {

});

Swoole\Event::wait();

SIGHUP(1)

用在用户终端连接结束时发出(正常和非正常都包括),通知统一session内的各个作业。如果程序中 没有捕捉该信号,默认当当前进程退出。Swoole\Process::signal(SIGHUP, function ($sig) {

$myPid = getmypid();

// 需要人工kill掉进程

Swoole\Process::kill($myPid);

});

SIGUSR1(10)

用户用来设置自定义信号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值