我在Linux中有一个多线程程序。我想在某些内存区域中查看它们是否已在特定时间段内写入。为此,我仅授予对这些内存页面的读取访问权限,并为SIGSEGV安装信号处理程序。现在我的问题是,每个线程都会自己调用信号处理程序。假设线程1写入某个禁止的内存区域,它是执行信号处理程序的区域吗?
首先
信号处理是全过程的;进程中的所有线程对于每个信号共享相同的配置。如果一个线程使用sigaction()为SIGINT建立处理程序,则可以从SIGINT传递到的任何线程中调用该处理程序。
但是请继续阅读
信号既可以指向整个进程,也可以指向特定线程 。如果信号是线程导向的 它是在线程( SIGBUS, SIGFPE, SIGILL, and SIGSEGV )上下文中执行特定硬件指令的直接结果而生成的
信号既可以指向整个进程,也可以指向特定线程 。如果信号是线程导向的
它是在线程( SIGBUS, SIGFPE, SIGILL, and SIGSEGV )上下文中执行特定硬件指令的直接结果而生成的
SIGBUS, SIGFPE, SIGILL, and SIGSEGV
我从引用TLPI。
TLPI