Rearrange EPICS::IOC->close() to be more robust

This commit is contained in:
Andrew Johnson
2020-01-01 00:14:08 -06:00
parent aad8a96b0d
commit 81df1b2892

View File

@@ -363,21 +363,25 @@ sub close {
unless $self->started;
close $self->{stdin};
$self->{stdin} = gensym;
my @response = $self->_getlines; # No terminator
close $self->{stdout};
$self->{stdout} = gensym;
$self->{select}->remove($self->{stderr});
close $self->{stderr};
my $pid = $self->{pid};
# Reset these before we call waitpid in case of timeout
$self->{pid} = undef;
$self->{stdin} = gensym;
$self->{stdout} = gensym;
$self->{stderr} = gensym;
if ($^O ne 'MSWin32') {
kill 'TERM', $self->{pid};
waitpid $self->{pid}, 0;
kill 'TERM', $pid;
waitpid $pid, 0;
}
$self->{pid} = undef;
return @response;
}