Говоря строго в терминах linux процессов, это "экземпляры" программ, как упоминается в книге. Это означает, что они содержат информацию, которую ваша программа должна «выполнить».
Процесс не означает инструкцию, которую выполняет программа, это означает всю запущенную программу. Программа, на которую вы ссылаетесь, я предполагаю, что вы пишете код, но это только один аспект процесса. Существуют различные другие атрибуты, такие как пространство стековой памяти, пространство кучи и идентификатор процесса и т. Д. c. и все эти детали хранятся в структуре данных, называемой блок управления процессом (PCB). Предположим, у вас есть скомпилированная версия вашего кода "Fibonacci. c", называемая fibonacci, если вы запустите ее с двух разных терминалов, это приведет к "двум процессам" одной и той же программы.
Вызовы функций - это то, что происходит внутри процесса. printf произойдет в той же функции. Он не считается отдельным процессом, поскольку выполняется внутри одной и той же сущности.
fork может создавать дочерние процессы. Как правило, я бы сказал, что любой процесс, который создается внутри нашего текущего процесса, будет дочерним процессом. Хотя это не может быть строгим определением. То, что делает форк, дублирует текущий процесс, это означает, что он создает новую запись, создавая новую печатную плату. Он имеет тот же сегмент кода, что и процесс, вызывающий ответвление, но у него будет собственное пространство памяти, идентификатор процесса и т. Д. c. Я не буду go углубляться в то, как обрабатывается память, когда происходит разветвление, но вы можете узнать больше об этом на страницах руководства.
printf также не является дочерним процессом. Он находится в самом текущем процессе.