前言
后台运行某一程序时,出现图1现象,进程被挂起,无法响应控制指令。使用ps指令查看,如图2所示。该进程并没有退出或者僵死,状态变为T。
strace分析
使用strace分析,部分输出如图3所示
从图3中可以看出,该进程是由于收到SIGTTOU信号而导致被挂起。
SIGPIPE,SIGTTIN,SIGTTOU三个信号量的解读
SIGTTOU的官方说明,该信号的默认动作是停止进程。
解决办法
1、不使用后台指令运行程序
2、使用nohup命令运行
3、忽略对SIGTTOU信号的处理,signal(SIGTTOU, SIG_IGN)