我有以下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();
}

有人告诉我flockprintf不是异步信号安全的。而且我在list中找不到flock的备用异步信号安全函数。

并根据上面的链接:



有没有一种方法可以使flock异步信号安全?还是当我收到flock信号时执行TERM的另一种解决方案?

最佳答案

您可以使用fcntl()替代flock()。

关于c++ - 如何使函数异步信号安全?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16967365/

10-10 16:43