Насколько я знаю, вилки используются для управления процессами и обеспечения параллелизма в программировании. Во время процесса каждый процесс идентифицируется уникальным идентификатором 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 () он возвращается к основной функции и, таким образом. Кроме того, если бы вы могли помочь мне разобраться в процедуре подсчета напечатанных выходных строк, я был бы признателен.