在父进程调用wait()函数之前,子进程没有退出的原因是父进程还没有等待子进程的退出状态。
在多进程编程中,当父进程创建子进程后,子进程会独立执行其对应的代码,父进程也会继续执行自己的代码。当子进程执行完毕后,它会变成一个"僵尸进程",即子进程退出了但父进程还没有调用wait()或waitpid()函数来获取子进程的退出状态。僵尸进程的存在不会占用系统资源,但它会占用一个进程ID,因此过多的僵尸进程可能会导致进程ID耗尽。
为了避免僵尸进程的积累,父进程需要通过wait()或waitpid()函数来获取子进程的退出状态。调用这些函数后,父进程会阻塞等待子进程的退出,并且获取子进程的退出状态信息。一旦父进程调用了wait()或waitpid()函数,子进程就会被彻底销毁,不再是僵尸进程。
所以,在父进程调用wait()函数之前,子进程还没有退出,因为父进程还没有去获取子进程的退出状态信息。
领取专属 10元无门槛券
手把手带您无忧上云