Tag: 异步安全

使用write或async-safe函数从信号处理程序中打印int

我想在信号处理程序内使用write (或任何async-safe函数)将数字打印到日志或终端中。 我宁愿不使用缓冲I / O. 是否有一种简单而推荐的方法可以做到这一点? 例如,代替printf ,我更喜欢write (或任何asyn安全function)。 void signal_handler(int sig) { pid_t pid; int stat; int old_errno = errno; while((pid = waitpid(-1, &stat, WNOHANG)) > 0) printf(“child %d terminated\n”, pid); errno = old_errno; return; } 打印字符串很容易。 我可以使用(无需打印pid )代替上面的printf : write(STDOUT_FILENO, “child terminated”, 16);