我可以区分直接发送到进程并通过调试器发送的信号吗?检测信号的发送者(linux,ptrace)
案例1:
$ ./process1
process1 (not ptraced)
//set up handler
alarm(5);
....
//signal is handled and I can parse handler parameters
案例2:
$ debugger1 ./process1
process1 (is ptraced by debugger1)
//set up handler
alarm(5);
...
//signal is catched by debugger1. It resumes process1 with PTRACE_CONT,
// signal_number is 4th parameter of PTRACE_CONT.
//signal is redelivered to process1
//and then is handled.
所以,我怎么能在信号处理程序检测,它是通过调试交还或系统发送?
操作系统是Linux,内核2.6.30是。程序用纯C编写。在真实程序中使用SIGALRM,但它不是由alarm()
生成的,而是由setitimer()
生成的。
我敢肯定,这是一个很好的问题,但它是有帮助的预留与线性时不变系统涉及的东西类型的“信号处理”的标签,快速傅里叶变换,幅度和相位等,或者也许有人有更好的解决方案。 – 2010-03-29 16:33:32
@Steve,谢谢。你是对的。 – osgx 2010-03-29 16:37:10