Вы можете переместить саб в свой собственный скрипт.Или вы можете использовать специальную команду "-
" для разветвления без запуска exec
.
my $pid = open3(*A, *B, *C, '-');
if (!$pid) {
run();
exit(0);
}
Кстати,
my @outlines = <B>;
my @errlines = <C>;
страдает от состояния гонки.Если ребенок печатает в STDERR достаточно, чтобы заполнить канал, два процесса зашли в тупик.Очень трудно сделать это правильно, поэтому я предлагаю вам использовать модуль более высокого уровня, такой как IPC :: Run.