True.Вызов ожидания будет накладывать некоторые ограничения на порядок выполнения процессов, но у вас все равно будет 8 процессов.Операторы printf будут выглядеть одинаково, но порядок, в котором они могут измениться.
В первой версии возможно, но не гарантируется, что все 8 процессов будут выполняться одновременно, в версии с ожиданиемчисло параллельных процессов, безусловно, никогда не достигнет 8.
В моей системе wait () будет возвращаться только после завершения прямых потомков, так что ваша версия с wait будет печататься детерминистически: дети всегда будут завершаться, прежде чем родители продолжат.1005 *
Как правило, вы увидите
N+1 //first printf
N+2 //second printf
N+3 //third printf
N+2 //third printf
N+1 //second printf
N+4 //third printf
N+1 //third printf
N //first printf
N+5 //second printf
N+6 //third printf
N+5 //third printf
N //second printf
N+7 //third printf
N //third printf
, где N - pid корневого процесса.Получение хорошего блока смежных номеров PID зависит от обычной схемы назначения pid, которую я обычно наблюдаю в * nix системах, и когда мне не удается запустить какой-то другой процесс во время работы вашей игрушечной программы.
Я не знакомс достаточным разнообразием операционных систем, чтобы сказать 100%, что вы никогда не встретите wait (), который пожнет внуков, но я был бы очень удивлен, услышав об этом.