int puts(const char*);
是否可重入?我可以安全地将它放入信号处理程序吗?
答案 0 :(得分:4)
Here是一个包含所有被认为对信号处理安全的函数的表:
“下表定义了一组 功能也应该是 可重入或不可中断的 信号,应该是 异步信号安全的。“
puts
似乎不在该列表中,但是根据this,它被认为是可重入的,但不是异步安全的,也许是为什么它不在上面提到的列表中。
答案 1 :(得分:2)
不,不是,您可以使用write()
(异步信号安全)从信号处理程序输出消息:
#include <unistd.h>
const char* msg = "The message to print.";
write(STDOUT_FILENO, msg, strlen(msg));