在C中执行家庭功能

时间:2016-05-23 18:08:52

标签: c linux

我们知道exec系列函数调用最终调用execve()这是一个系统调用,剩下的是库函数。因此,通常,对execve()适用的任何含义也适用于其他exec*()函数。

我想知道,在执行execve()期间,所有信号是否被阻塞直到成功,或者是否有办法将信号传递给对应于exec的pid? (我知道它不会在成功时返回,并且不会进一步执行调用函数)

1 个答案:

答案 0 :(得分:4)

我不确定我的问题是否正确,如果我错了,请随时纠正我。

但是,基本上,是的,从流程的角度来看,系统调用可以被视为“原子”。因此,一旦启动www.example.com/example3 系统调用,只有内核可以使用它,并且在运行新命令或失败并显示错误代码或引发execve()信号之前不会释放该进程(因为SIGKILL是唯一不可阻挡的信号)。

但是,一旦SIGKILL产生了一个新进程(并从内核返回),它就可以完全中断任何信号。