首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确定一个函数是否是异步信号安全的(可以在信号处理程序中调用)

确定一个函数是否是异步信号安全的(可以在信号处理程序中调用)
EN

Stack Overflow用户
提问于 2012-01-26 06:16:09
回答 1查看 1.5K关注 0票数 6

我的问题是:

如果您没有对implementation?

  • If的访问权限,那么是否有一种方法可以确定一个函数是否是异步信号安全的?

如果读取信号()或sigaction()的手册页,就会得到异步信号安全函数(可以在信号处理程序中安全调用的函数)的列表。不过,我认为这份清单并非详尽无遗。例如,下面的页面http://linux.die.net/man/7/signal异步信号安全函数报头下读取:

POSIX.1-2004 (也称为POSIX.1-2001技术勘误表2)需要一个实现,以保证在信号处理程序中安全地调用下列功能:

然后继续列出上面手册中列出的正常异步信号安全函数。当我读到它时,它说“它需要”,而不是“这些是唯一的”。

例如,this site说back_trace_symbols_fd()是异步信号安全的。该函数获取的是dladdr()中的数据,它不像back_trace_symbols()那样使用malloc(),所以它看起来可能是安全的。另外,我做了一些测试,dladdr()的输出结构包含char*变量,但这些变量在运行时不是malloc‘’ed的。它们指向的char字符串甚至在调用dladdr()之前就存在于运行时。

任何能为我指明正确方向的想法或想法都会受到赞赏。

EN

回答 1

Stack Overflow用户

发布于 2012-01-26 15:42:58

你希望在信号处理程序中实现什么?你应该考虑一下它是不是合适的地方。最好遵循手册页的建议:

代码语言:javascript
复制
In general, signal handlers should do little more  
than set a flag; most other actions are not safe.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9014560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档