否。从
man页面:
execve()不会成功返回,并且调用过程的文本,数据,bss和堆栈会被加载的程序覆盖。调用的程序将继承调用进程的PID,以及所有未设置为在exec上关闭的打开文件描述符。呼叫过程中待处理的信号被清除。设置为由呼叫过程捕获的任何信号都将重置为其默认行为。SIGCHLD信号(设置为SIG_IGN时)可能会也可能不会重置为SIG_DFL。
实际上,如果在代码被一些非常不同的代码替换之后,信号处理程序仍然处于活动状态,那么您可能会在信号出现时遇到各种混乱。毕竟,信号处理程序只是发生某种情况(折扣
SIG_IGN和
SIG_DFL暂时)时要调用的地址。谁知道当您替换整个文本段时,该地址处的代码是什么?



