gpt4 book ai didi

android - 是否可以从故障线程而不是单独的线程调用 SIGSEGV 信号处理程序?

转载 作者:搜寻专家 更新时间:2023-11-01 08:44:41 24 4
gpt4 key购买 nike

在 Android 上(我假设在通用 Linux 上也是如此),使用 sigaction 设置的信号处理函数在单独的线程中调用(可能专门用于信号处理)。有没有办法注册处理程序回调,以便它在触发信号的同一线程中执行?

最佳答案

在通用 Linux 上,默认情况下,信号处理程序在单独的线程中调用。 (我怀疑它在 Android 上是一样的,但我没有研究它。)要在单独的线程中处理信号,您必须从您想要的某个线程显式调用 sigwait(3)处理信号。这是一个常见的设置。

相反,默认行为(对于进程定向信号)是“随机”选择现有线程来处理传入信号。 (当然可能会有一些一致性,但这是一个实现细节。)

但是,也有线程定向信号,保证在特定线程中处理。线程定向信号的示例包括响应硬件异常而产生的信号,如SIGSEGVSIGBUSSIGILL等,将被处理在同一个线程中(意味着您不需要做任何特别的事情!),以及使用 pthread_kill(3) 发送到特定线程的信号。

signal(7) 手册页(注意章节编号)是一个很好的引用。

关于android - 是否可以从故障线程而不是单独的线程调用 SIGSEGV 信号处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29630069/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com