我的问题是:
如果您没有对implementation?
?
如果读取信号()或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()之前就存在于运行时。
任何能为我指明正确方向的想法或想法都会受到赞赏。
发布于 2012-01-26 15:42:58
你希望在信号处理程序中实现什么?你应该考虑一下它是不是合适的地方。最好遵循手册页的建议:
In general, signal handlers should do little more
than set a flag; most other actions are not safe.https://stackoverflow.com/questions/9014560
复制相似问题