Все ваши дети пишут в один и тот же файл журнала, и вы не предприняли никаких шагов, чтобы они не перезаписывали вывод друг друга. Не имея возможности воспроизвести проблему на моем компьютере, я не могу сказать наверняка, но я бы предположил, что все N дочерних элементов на самом деле работают, но некоторые результаты выходят из строя.
Чтобы N процессов одновременно записывали в один и тот же файл без потери вывода, необходимо открыть файл для append вместо обычной записи. В C вы должны использовать флаги O_WRONLY|O_APPEND
с open(2)
или режим "a"
с fopen(3)
. Затем ядро гарантирует, что все записи идут в самый конец файла. (Согласно справочной странице, это не надежно по сравнению с NFS.) Вы также должны обратить внимание на , сколько вы записываете в файл за раз, иначе выходные данные одного процесса могут появиться в середина выхода из другого. Я не знаю, возможно ли что-либо из этого в Perl, но похоже, что вы все равно нашли другое решение.