我有以下sigaction
处理函数
void signal_term_handler(int sig)
{
printf("EXIT :TERM signal Received!\n");
int rc = flock(pid_file, LOCK_UN | LOCK_NB);
if(rc) {
char *piderr = "PID file unlock failed!";
fprintf(stderr, "%s\n", piderr);
printf(piderr);
}
abort();
}
有人告诉我这不是异步信号安全的flock
。而且我在此列表printf
中找不到替代的异步信号安全功能 。flock
并根据上面的链接:
当一个信号中断了一个不安全的函数并且信号捕获函数调用了一个不安全的函数时,行为是未定义的
有没有办法使flock
异步信号安全?flock
或者当我收到TERM
信号时是否有其他解决方案可以执行?