我正在尝试覆盖或更改进程的信号。正如我猜测的那样,每个进程中都有一个单独的信号表。
/proc文件夹中有类似的东西吗?
感谢您的时间。
答案1
/proc/<pid>/status
包括描述给定进程信号处理的字段;看man 5 proc
了解详情。例如:
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000010000
SigIgn: 0000000000384004
SigCgt: 000000004b813efb
信号处理无法从外部更改,您不能使用它来影响进程的信号处理。
如果您可以处理ptrace
一个进程,则可以将调试器附加到它并使用它来更改其信号处理。
答案2
是的,请阅读以下内容中的“注释”部分man 7 signal
:
该文件包含多个字段,这些字段显示线程正在阻塞 ( )、捕获 ( ) 或忽略 ( )
/proc/[pid]/task/[tid]/status
的信号。 (捕获或忽略的信号集在进程中的所有线程中都是相同的。)其他字段显示定向到线程 ( ) 的待处理信号集以及定向到的待处理信号集。整个过程是()。中的相应字段显示主线程的信息。请参阅了解更多详情。SigBlk
SigCgt
SigIgn
SigPnd
ShdPnd
/proc/[pid]/status
proc(5)