Browse Source

workaround bug in linux dup2

the linux documentation for dup2 says it can fail with EBUSY due to a
race condition with open and dup in the kernel. shield applications
(and the rest of libc) from this nonsense by looping until it succeeds
rs-1.0
Rich Felker 15 years ago
parent
commit
f9a6372a98
  1. 5
      src/unistd/dup2.c

5
src/unistd/dup2.c

@ -1,7 +1,10 @@
#include <unistd.h>
#include <errno.h>
#include "syscall.h"
int dup2(int old, int new)
{
return syscall(SYS_dup2, old, new);
int r;
while ((r=__syscall(SYS_dup2, old, new))==-EBUSY);
return __syscall_ret(r);
}

Loading…
Cancel
Save