2015-07-04 1 views
1

Я прочитал, что родительский и дочерний будут работать над идентичным кодом после системного вызова fork(). Я не могу понять, что делать fork(), так как я не могу понять, что он будет делать при выполнении одного и того же кода дважды.Какой смысл использовать системный вызов fork(), когда оба процесса (родительский и дочерний) работают с одним и тем же кодом?

+0

Просто выполните что-нибудь еще в процессе child/parent? 'pid_t pid = fork(); if (pid == 0) {...} else {...} '. (Не забудьте также проверить «-1») – Zeta

+0

Он выполняет только один и тот же код дважды, если вы сообщите об этом. –

+0

Он может выполнять тот же код с разными данными и другим стеком. –

ответ

3

Возвращаемое значение fork() отличается в процессах ребенка и родителей, так что вы обычно будете иметь что-то вдоль линий

pid_t child_pid = fork() 
if (child_pid == 0) { 
    // do stuff in child process 
} else { 
    // do stuff in parent process 
} 
+0

Примечание. Не забудьте проверить, является ли возвращаемое значение «-1». – Zeta

0

Вы можете использовать, если другое условие, чтобы выполнить другую часть кода для родитель и ребенок. Поскольку fork возвращает 0 в дочерний процесс, он возвращает pid дочернего элемента родительскому элементу. Используйте это как дифференциатор в условии if.

Смежные вопросы