2010-10-05 36 views

回答

4

成功调用execlp()后,以前的程序中的任何代码都不会再次运行。该进程的内存空间被新进程覆盖。

如果您仍然需要与孩子进行一些管理,那么在致电execlp()之前,您需要致电fork()。这会给你两个过程,然后你可以在两者之间进行一些沟通。

这也解释了它相当清楚:

+0

谢谢。你对exec()函数的解释都覆盖了当前内存空间的方法,以及解决这个问题的建议是正确的。 – XBigTK13X 2010-10-05 13:41:54

2

exec*()功能替换与作为参数提供的可执行称为它们的过程。

这意味着,如果execlp调用成功,那么发起呼叫的孩子将不再存在。因此,execlp后面的任何printf语句只能在execlp调用失败时执行,这通常意味着请求的程序不存在。

相关问题