put 是可重入的吗?

发布于 2024-11-06 02:02:47 字数 68 浏览 0 评论 0原文

int put(const char*); 是可重入的吗?我可以安全地将其放入信号处理程序中吗?

Is int puts(const char*); re-entrant? Can I safely put it into a signal handler?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

关于从前 2024-11-13 02:02:47

这里是一个表,其中包含被认为可以安全处理信号的所有函数:

“下表定义了一组
函数应为
可重入或不可中断
信号并且应
异步信号安全。”

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

Here is a table with all functions considered safe for signal handling:

"The following table defines a set of
functions that shall be either
reentrant or non-interruptible by
signals and shall be
async-signal-safe."

puts does not seem to be in that list, however per this, it is deemed reentrant, but not async-safe, perhaps why it is not in the above mentioned list.

执妄 2024-11-13 02:02:47

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

#include <unistd.h>

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

No it is not, you can however use write(), which is async signal safe, to output messages from a signal handler:

#include <unistd.h>

const char* msg = "The message to print.";
write(STDOUT_FILENO, msg, strlen(msg));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文