Разъяснение по вилкам - PullRequest
       13

Разъяснение по вилкам

0 голосов
/ 29 апреля 2020

Насколько я знаю, вилки используются для управления процессами и обеспечения параллелизма в программировании. Во время процесса каждый процесс идентифицируется уникальным идентификатором PID, но имеет сходные характеристики, например адреса виртуальной памяти. Я думаю, что мне нужно пояснить, как использование Fork () дважды в вызове метода возвращает 2, а не 2 ^ 2 раза, так как один вызов Fork () должен возвращать как родительский процесс, так и дочерний процесс, который печатает пример. Я добавил свой код, чтобы кто-нибудь мог следовать. На него можно ссылаться из: http://csapp.cs.cmu.edu/3e/ics3/code/src/csapp.c

#include <stdlib.h>
#include <stdio.h> 
#include <sys/types.h> 
#include <unistd.h> 
void try() 
{
Fork();
printf("example\n");
Fork();
return;
}
pid_t Fork(void)
{
pid_t pid;
if((pid = fork()) < 0)
unix_error("Fork error");
return pid;
}
void unix_error(char *msg) /* Unix-style error */
{
fprintf(stderr, "%s: %s\n", msg, strerror(errno));
exit(0);
}
int main() 
{
try(); Fork();
printf("Example\n");
exit(0);
}

Компиляция: g cc -o fork forkprob1. c Вывод:

пример пример Пример Пример Пример Пример Пример Пример Пример Пример

В моем try (), я думаю, что после первого вызова Fork () он возвращается к основной функции и, таким образом. Кроме того, если бы вы могли помочь мне разобраться в процедуре подсчета напечатанных выходных строк, я был бы признателен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...