Unix 如果您从子进程中获取fork()和exec(),并在父进程中等待,那么父进程如何从子进程中获取返回代码?
我正在学习Unix 如果您从子进程中获取fork()和exec(),并在父进程中等待,那么父进程如何从子进程中获取返回代码?,unix,process,fork,exec,wait,Unix,Process,Fork,Exec,Wait,我正在学习fork(),exec(),等等。我在一本教科书中遇到了一些我不完全理解的东西 在本例中,一个进程调用fork() 在子进程中,我们调用exec() 稍后,在父级中,我们调用wait() 我的理解是,成功的exec()调用永远不会返回。如果我们在子对象中调用了exec(),如果子对象永远不会从exec()返回控制权,我们怎么能等待子对象在父对象中返回呢 我唯一的猜测是,发生的情况是,家长认为自己在等待孩子,实际上是在等待用exec创建的新进程?也就是说,通常我会fork()等待孩子。如
fork()
,exec()
,等等。我在一本教科书中遇到了一些我不完全理解的东西
在本例中,一个进程调用fork()
在子进程中,我们调用exec()
稍后,在父级中,我们调用wait()
我的理解是,成功的exec()
调用永远不会返回。如果我们在子对象中调用了exec()
,如果子对象永远不会从exec()
返回控制权,我们怎么能等待子对象在父对象中返回呢
我唯一的猜测是,发生的情况是,家长认为自己在等待孩子,实际上是在等待用exec创建的新进程?也就是说,通常我会fork()
等待孩子。如果我fork()
谢谢 您需要区分流程和程序。调用exec
在同一进程中运行不同的程序。exec
函数不会返回(发出错误信号除外),因为它会终止调用的程序。但是,该进程被重用以运行不同的程序。在某种程度上,从运行exec
的进程的角度来看,exec
函数作为新程序的入口点返回
从父进程的角度来看,有一个子进程。这就是父母所知道的一切。父级不知道子级调用了exec
,除非它观察并通过运行ps
等间接方式发现。父进程只是在等待子进程退出,而不管子进程正在运行什么程序