close
на дескрипторе, созданном open -|
, ожидает завершения дочернего процесса.Мне кажется, что ребенок должен умереть от сигнала PIPE или ошибки в следующий раз, когда он попытается написать после того, как вы позвоните close
, но вы можете убить ребенка, если не хотите ждать так долго.
my $pid = open(...);
while (...) {
...
}
kill PIPE => $pid;
close(...);
PIPE
немного неортодоксально, но здесь это показалось уместным.Не стесняйтесь отправить TERM
или что-то еще.