c – 如何使函数异步信号安全?

前端之家收集整理的这篇文章主要介绍了c – 如何使函数异步信号安全?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下sigaction处理函数
  1. void signal_term_handler(int sig)
  2. {
  3. printf("EXIT :TERM signal Received!\n");
  4. int rc = flock(pid_file,LOCK_UN | LOCK_NB);
  5. if(rc) {
  6. char *piderr = "PID file unlock Failed!";
  7. fprintf(stderr,"%s\n",piderr);
  8. printf(piderr);
  9. }
  10. abort();
  11. }

有人告诉我,flock和printf不是异步信号安全的.而且我找不到另一个异步信号安全函数flockin这个list.

并根据以上链接

when a signal interrupts an unsafe function and the signal-catching
function calls an unsafe function,the behavior is undefined

有没有办法使flock异步信号安全?或者,当我收到TERM信号时,是否有另一种解决方案来执行flock?

解决方法

您可以使用 fcntl()作为flock()的替代方法.

猜你在找的C&C++相关文章