是可重入的吗?

时间:2011-05-09 09:39:36

标签: c signals reentrancy

int puts(const char*);是否可重入?我可以安全地将它放入信号处理程序吗?

2 个答案:

答案 0 :(得分:4)

Here是一个包含所有被认为对信号处理安全的函数的表:

  

“下表定义了一组   功能也应该是   可重入或不可中断的   信号,应该是   异步信号安全的。“

puts似乎不在该列表中,但是根据this,它被认为是可重入的,但不是异步安全的,也许是为什么它不在上面提到的列表中。

答案 1 :(得分:2)

不,不是,您可以使用write()(异步信号安全)从信号处理程序输出消息:

#include <unistd.h>

const char* msg = "The message to print.";
write(STDOUT_FILENO, msg, strlen(msg));