Эх, fork(). Одни процессы порождают другие. Кажется, у меня есть история об этом.
Форк может потерпеть неудачу. Понимаете? В самом деле, понимаете? Это очень серьёзно. Форк может завершиться с ошибкой. Так же, как и malloc. Нечасто, но когда такое происходит, нельзя просто взять и игнорировать это. Вы должны что-то предпринять в таком случае.
Похоже, всем известно, что fork возвращает дочернему процессу 0, а родителю некоторое положительное число — pid ребенка. Он выдаёт этот номер, который используется позже.
Угадайте, что происходит, когда вы не проверяете ответ на ошибку? Да, вы возьмёте "-1" (ошибка форка) как pid.
Читать полностью »