in reply to Detect whether a writeable filehandle has closed?
With unbuffered I/O, print returns undef when writing to a closed filehandle; for pipes, $! is then set to "Broken pipe". You don't get SIGPIPE after the child closed the pipe, but after an unsuccsessful write to that filehandle. I tried to use select (and IO::Select with $io->can_write()) to detect whether I can write to a filehandle before writing, to no avail. Both always report the filehandle to be apt for writing, even after receiving SIGPIPE. Only after closing the filehandle for writing in the parent (e.g. in the SIGPIPE handler) I get the expected result.
On linux, that is (debian). So, no way to check whether the end point of the pipe is still connected before writing to it.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Detect whether a writeable filehandle has closed?
by jdporter (Paladin) on Jan 14, 2021 at 14:48 UTC | |
by shmem (Chancellor) on Jan 14, 2021 at 14:56 UTC |