NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/44950: fcntl(F_MAXFD) returns bogus values



The following reply was made to PR kern/44950; it has been noted by GNATS.

From: Jukka Ruohonen <jruohonen%iki.fi@localhost>
To: Martin Husemann <martin%duskware.de@localhost>
Cc: gnats-bugs%NetBSD.org@localhost, Julio Merino <jmmv%julipedia.org@localhost>
Subject: Re: kern/44950: fcntl(F_MAXFD) returns bogus values
Date: Wed, 11 May 2011 10:55:08 +0300

 On Wed, May 11, 2011 at 09:43:52AM +0200, Martin Husemann wrote:
 > Besides that, this is more of a (k)sh bug, which seems to be pretty common
 > for bourne shells in general (or so says the internet, the fd in use seems
 > to vary, typically 19 instead of 9). The shell keeps an fd open when it execs
 > scripts from a file.
 
 I don't quite understand the following behavior of fcntl(2) either. Why the
 assertion goes off?
 
 #include <sys/wait.h>
 
 #include <assert.h>
 #include <fcntl.h>
 #include <unistd.h>
 
 int
 main(void)
 {
        pid_t pid;
        int i, sta;
 
        pid = fork();
        assert(pid >= 0);
 
        if (pid == 0) {
 
                for (i = 0; i < 1024; i++)
                        (void)close(i);
 
                _exit(fcntl(0, F_MAXFD));
        }
 
        (void)wait(&sta);
 
        assert(WEXITSTATUS(sta) != 255);
 
        return 0;
 }
 


Home | Main Index | Thread Index | Old Index