【发布时间】:2019-10-18 01:07:53
【问题描述】:
我正在尝试捕获 SIGTERM 信号并在处理程序中从 Linux 守护进程打印一条消息:
void SigStop_Handler(int sig)
{
D(printf("****************** HANDLED STOP SIGNAL ******************\n"));
printf("\n");
}
int main(int argc, char *argv[])
{
signal(SIGTERM, SigStop_Handler);
while(true)
{
//do something
}
return 0;
}
程序作为守护进程运行,从命令行启动:
systemctl start abc
deameon 将通过以下方式停止:
systemctl stop abc
当守护程序停止时,我希望该消息将打印在控制台上。但是,该消息不会打印出来,命令行也不会返回到命令提示符。它确实会在一段时间后返回(超时)。守护程序将停止,但不会打印消息。
我做错了什么?
【问题讨论】: