On 01/25/2011 10:02 PM, Eric Blake wrote: > test-dup2 and test-fcntl are failing on Haiku when using both the dup2 > and cloexec modules in tandem. I tested on Haiku alpha 2 (the latest > formal release per haiku-os.org) rather than a nightly build, so this > may have already been fixed by upstream development. But it seems like > I should be able to come up with workarounds.
Also: $ cat foo.c #include <fcntl.h> #include <errno.h> #include <stdio.h> int main() { int fd1; int fd2; int i; fd1 = fcntl(0, F_DUPFD); fcntl(fd1, F_SETFD, FD_CLOEXEC); i = fcntl(fd1, F_GETFD); printf("before %d\n", i); fd2 = fcntl(fd1, F_DUPFD, fd2); i = fcntl(fd1, F_GETFD); printf("middle %d", i); i = fcntl(fd2, F_GETFD); printf(" %d\n", i); fcntl(fd1, F_SETFD, FD_CLOEXEC); i = fcntl(fd1, F_GETFD); printf("after %d", i); i = fcntl(fd2, F_GETFD); printf(" %d\n", i); return 0; } $ ./foo before 1 middle 0 0 after 1 0 Oops - the mere act of duplicating an fd loses the FD_CLOEXEC bit on the original; but at least it can be restored right after duplication. -- Eric Blake ebl...@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature