Но тогда как мы точно знаем, какой процесс запускается первым?Я имел в виду порядок исполнения.
Нет гарантии, кто побежал первым.fork
возвращает 0
, если это ребенок, и pid
ребенка, если это родитель.Теоретически они могут работать одновременно в многопроцессорной системе.Если вы действительно хотите определить, какой из них запускается первым, у вас может быть общая блокировка между двумя процессами.Можно сказать, что тот, кто первым получает замок, побежал первым.
С точки зрения того, что делать в вашем утверждении else.Вам нужно дождаться завершения дочернего процесса, используя wait
или waitpid
.
Если честно, я не вижу никакой разницы между использованием fork
и не использованием fork
.
Разница в том, что вы создаете дочерний процесс,Еще один процесс в системе, выполняющий вычисления.Для этой простой проблемы опыт конечного пользователя одинаков.Но fork
сильно отличается, когда вы пишете системы, такие как серверы, которые должны работать с вещами одновременно.
Кроме того, если я хочу, чтобы родительский процесс обрабатывал ввод от пользователя, и позволял дочернему процессуобрабатывать дисплей, как я могу это сделать?
У вас, похоже, уже есть эта настройка.Родительскому процессу просто нужно дождаться завершения дочернего процесса.Дочерний процесс printf
выдаст результаты в терминал.И родительский процесс в настоящее время получает пользовательский ввод из командной строки.