我有以下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
不是异步信号安全的。而且我在list中找不到flock
的备用异步信号安全函数。并根据上面的链接:
有没有一种方法可以使
flock
异步信号安全?还是当我收到flock
信号时执行TERM
的另一种解决方案? 最佳答案
您可以使用fcntl()替代flock()。
关于c++ - 如何使函数异步信号安全?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16967365/