Closed. This question needs details or clarity。它当前不接受答案。












想改善这个问题吗?添加详细信息,并通过editing this post阐明问题。

4年前关闭。



Improve this question




众所周知,exec系列函数调用最终将调用execve()(这是系统调用),其余的是库函数。因此,通常,适用于execve()的任何含义对于其他exec*()函数也适用。

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

最佳答案

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

但是,基本上,是的,从过程的 Angular 来看,系统调用可以被视为“原子的”。因此,一旦启动execve()系统调用,只有内核才能使用它,直到运行新命令或出现错误代码失败或引发SIGKILL信号时,它才会释放进程(因为SIGKILL是唯一不可阻塞的信号) )。

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

关于c - C中的exec系列功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37397713/

10-10 14:33