在子进程中调用execlp()之后如何printf()?

时间:2010-10-05 13:19:24

标签: c exec printf parent-child

我正在尝试在子进程中调用execlp()之后从子进程打印消息。但是,在调用execlp()之后终端上没有任何内容。是什么原因导致我的printf()调用不显示任何内容,以及如何解决这个问题?

3 个答案:

答案 0 :(得分:4)

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

如果您仍需要对孩子进行管理,那么在致电fork()之前,您需要致电execlp()。这将为您提供两个流程,然后您可以在两者之间进行一些沟通。

答案 1 :(得分:2)

exec*()函数替换使用作为参数提供的可执行文件调用它们的进程。

这意味着,如果execlp呼叫成功,则进行呼叫的子节点不再存在。因此,printf之后的任何execlp语句只能在execlp调用失败时执行,这通常意味着所请求的程序不存在。

答案 2 :(得分:1)

“exec()系列函数用新的过程映像”

替换当前过程映像

(来自:http://linux.die.net/man/3/execlp

这很清楚地解释了它。