当前位置: 首页 > 面试题库 >

SIGSEGV是否传递到每个线程?

楚翰
2023-03-14
问题内容

我在Linux中有一个多线程程序。我想在某些内存区域中查看它们是否已在特定时间段内写入。为此,我仅授予对这些内存页面的读取访问权限,并为SIGSEGV安装信号处理程序。现在我的问题是,每个线程都会自己调用信号处理程序。假设线程1写入某个禁止的内存区域,它是执行信号处理程序的区域吗?


问题答案:

首先

信号处理是全过程的;进程中的所有线程对于每个信号共享相同的配置。如果一个线程使用sigaction()为SIGINT建立处理程序,则可以从SIGINT传递到的任何线程中调用该处理程序。

但是请继续阅读

信号既可以指向整个进程,也可以指向特定线程 。如果信号是线程导向的

它是在线程( SIGBUS, SIGFPE, SIGILL, and SIGSEGV )上下文中执行特定硬件指令的直接结果而生成的

我从引用TLPI



 类似资料:
  • 我有两个消费群体,即G1和G2。 null 类似地,当G2轮询后,它仍然会找到关于主题的消息。这里还枯萎M3或M4会收到消息吗? 我也相信所有的成员都应该在同一个节点上。对吧?客户端代码或Kafka的责任是选择一个组中的特定成员吗?

  • 我在编写一个应用程序时遇到了一些问题。它的工作是用线来解决迷宫。一个线程开始,对于每个分支,它调用另一个类中的静态方法,传递另一个线程需要的参数,然后为每个路径启动线程。我的输出都搞乱了,我不确定这是多线程问题还是引用的问题。下面是一些代码(每个线程都有一个类的新实例): 和返回ValidPaths的方法 CheckEnvirondings使用传递给子级的深度副本(通过构造函数)来验证子级可以采用

  • ConsumerThread1-[topic1-0,topic2-0,topic3-0] ConsumerThread2-[topic1-1,topic2-1,topic3-1] 但是,我们希望每个主题有一个使用者线程,而不是每个分区有一个KafkaListener(或使用者线程)。例如: ConsumerThread1-[topic1-0,topic1-1] ConsumerThread2-[t

  • 我尝试分析一个gRPC java服务器。我主要看到下面的一组线程池。 null

  • 问题内容: 在Golang中,我试图为我的旅行推销员问题创建一个加扰切片函数。在执行此操作时,我注意到当我开始编辑切片时,每次传递时,我赋予的加密功能都是不同的。 经过一些调试后,我发现这是由于我在函数内部编辑了切片。但是既然Golang被认为是一种“价值传递”的语言,那怎么可能呢? https://play.golang.org/p/mMivoH0TuV 我提供了一个游乐场链接来显示我的意思。通