我了解到使用vfork()系统调用创建的新进程在父进程的地址空间中作为线程执行,直到子线程调用exit()或exec()系统调用前,父进程将被阻塞。因此,我编写了一个使用vfork()系统调用的程序。
#include <stdio.h>
#include <unistd.h>
int main()
{
pid_t pid;
printf("Parent\n");
pid = vfork();
if(pid==0)
{
printf("Child\n");
}
return 0;
}
我得到的输出如下:
Parent
Child
Parent
Child
Parent
Child
....
....
....
我曾认为return语句必须在内部调用exit()系统调用,因此我只期望输出为。
Parent
Child
有人能解释一下为什么这个程序不会停止,而是持续打印无限循环吗?
vfork
仅在想要 POSIX MMU-less 微控制器垃圾上使用。 - R.. GitHub STOP HELPING ICE