fork()
разделяет программу тока, делая два идентичных копий - разница только в обратном коде fork()
.
Так что, если вы fork()
дважды:
fork();
fork();
Тогда что произойдет это - первый вилка разделится parent
в parent + child
.
второй вилка будет разделяться как на две части, так и на другую. Предоставление вам:
parent
+ - child
+ - child
+ - child
Чтобы избежать этого, необходимо проверить код возврата fork()
и использовать код возврата, чтобы решить, если вы все еще в parent
. Это не обязательно плохо, но вам нужно знать, что это произойдет, и убедитесь, что вы справляетесь, например. сигналы, коды возврата, waitpids и т. д. соответственно. Итак, обычно вы сделаете fork
ing только от родителя.
читать [Advanced Linux Программирование] (HTTP: // advancedlinuxprogramming.com/) –