我读到使用 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
有人可以解释一下为什么它实际上并没有停止并连续打印无限循环。