Я прочитал, что новый процесс, созданный с помощью системного вызова 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
Может кто-нибудь объяснить мне, почему на самом деле он не останавливается и непрерывно печатает бесконечный цикл.