2014-05-02 2 views
2

Я читал человека и в другом месте, но я борюсь с этой концепцией. Детский процесс всегда уникален, но в любом примере forking я обнаружил, что pid ребенка должен = 0. Что делать, если есть много детей, они не могут быть равны нулю или они не будут уникальными?fork(): Ребенок всегда равен нулю и всегда уникален? Что происходит?

+1

Детский pid всегда 0 в своей среде. Родительский процесс - это тот, который видит реальный pid. –

+1

Возможный дубликат [Что именно возвращает fork?] (Http://stackoverflow.com/questions/5577564/what-exactly-does-fork-return) – Daniel

+0

@RedAlert Нет, pid ребенка никогда не 0. fork() _ возвращает 0_ ребенку, чтобы указать, что это ребенок. –

ответ

5

Детский процесс pid никогда не равен нулю. fork возвращает ноль ребенку , чтобы сообщить ему, что это ребенок. Однако pid дочернего процесса - это значение, которое fork возвращает к родителю . (Помните, что fork, считая его успешным, возвращает дважды - один раз в дочернем элементе, один раз в родительском.) Это можно подтвердить, написав программу, которая сравнивает результат getpid с дочерним элементом со значением fork. родительский (с небольшим IPC).

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