fork()
не порождает "пустой" процесс двоичную. Он создает клон вызывающего процесса, и оба процесса запускаются параллельно. Это означает, что если разветвленный процесс не превращает execve
в другой образ процесса или заканчивается, вы получаете две копии одной и той же программы почти в том же состоянии, что и рядом. Единственное различие между ними заключается в том, что ребенок получает 0 в качестве возвращаемого значения fork, а родитель видит PID дочернего процесса.
Вы наверняка знаете эти рассказы SciFi, где человек внезапно копируется на квантовый уровень и отвечает их оригиналу, и они вступают в спор о том, кто является оригиналом и кто является копией. Это точно ситуация родительского и дочернего процесса после вилки.
И самое главное, он все еще ждет моей команды после того, как программа будет выполнена.
Нет, это не так. Это просто похоже на консоль: родительский процесс завершается, и, таким образом, оболочка будет печатать приглашение. Затем дочерний процесс печатает свои материалы после подсказки. Попробуйте позвонить со сном, т. Е.
~/... > ./hw3 ; sleep 1
Весь код и вывод должны быть вставлены * здесь * и не связаны на внешнем сайте. – crashmstr
Пожалуйста, не публикуйте фотографии с текстом, вместо этого введите текст в текст. –