Cygwin: FIFO: avoid hang after exec
Define fhandler:fifo::fixup_after_exec, which sets listen_client_thr and lct_termination_evt to NULL. This forces the listen_client thread to restart on the first attempt to read after an exec. Previously the exec'd process could hang in fhandler_fifo::raw_read.
This commit is contained in:
parent
f811485ffb
commit
230c5df2df
|
@ -1301,6 +1301,7 @@ public:
|
|||
ssize_t __reg3 raw_write (const void *ptr, size_t ulen);
|
||||
bool arm (HANDLE h);
|
||||
void fixup_after_fork (HANDLE);
|
||||
void fixup_after_exec ();
|
||||
int __reg2 fstatvfs (struct statvfs *buf);
|
||||
void clear_readahead ()
|
||||
{
|
||||
|
|
|
@ -942,6 +942,15 @@ fhandler_fifo::fixup_after_fork (HANDLE parent)
|
|||
fifo_client_unlock ();
|
||||
}
|
||||
|
||||
void
|
||||
fhandler_fifo::fixup_after_exec ()
|
||||
{
|
||||
fhandler_base::fixup_after_exec ();
|
||||
listen_client_thr = NULL;
|
||||
lct_termination_evt = NULL;
|
||||
fifo_client_unlock ();
|
||||
}
|
||||
|
||||
void
|
||||
fhandler_fifo::set_close_on_exec (bool val)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue