Но это именно то, что делает fork
. Вы раздвоили процесс, и все после fork
будет выполнено дважды, потому что теперь у вас есть два процесса, выполняющих один и тот же код печати. Вы в основном спрашиваете, почему fork
вилки. fork
вилки, потому что предполагается, чтобы вилка. Вот для чего.
После fork
родительский и дочерний процессы обычно выполняются параллельно , что означает, что хороший последовательный вывод, который вы видите в своем примере, не гарантируется. Вы могли бы легко получить вывод с чередованием строк из двух процессов.
wait
функция в вашем случае выполняется только из родительского процесса. Это заставляет его ждать, пока дочерний процесс не завершится, и только после этого родительский процесс также будет завершен. Вызов wait
в этом конкретном примере на самом деле не критичен, так как программа ничего не делает после этого, она просто завершается. Но, например, если вы хотите получить некоторую обратную связь от дочернего процесса в родительский процесс и выполнить дополнительную работу над этой обратной связью в родительском процессе, вам придется использовать wait
, чтобы дождаться завершения дочернего процесса. его исполнение.