Hello, Yang. You're not supposed to use os.open there. See the doc at http://docs.python.org/lib/os-fd-ops.html
Is there any reason you want to use os.close? On 20 May 2007 04:26:12 GMT, Yang <[EMAIL PROTECTED]> wrote: > Hi, I'm experiencing a problem when trying to close the file descriptor > for a socket, creating another socket, and then closing the file > descriptor for that second socket. I can't tell if my issue is about > Python or POSIX. > > In the following, the first time through, everything works. On the > second connection, though, the same file descriptor as the first > connection may be re-used, but for some reason, trying to do > os.read/close on that file descriptor will cause an error. > > Thanks in advance for any help on why this problem is occurring and/or > how to resolve it (preferrably, I can continue to use file descriptors > instead of resorting to socket.recv/socket.close). > > def handle( s ): > print id(s), s > print os.read( s.fileno(), 4096 ) # s.recv(4096) > os.close( s.fileno() ) # s.close() > svr = socket.socket() > svr.bind( ( 'localhost', 8003 ) ) > svr.listen( 1 ) > while True: > print 'accepting' > s,_ = svr.accept() > handle( s ) > > # Traceback (most recent call last): > # File "./normal_server_close_error.py", line 25, in <module> > # handle( s ) > # File "./normal_server_close_error.py", line 13, in handle > # print os.read( s.fileno(), 4096 ) # s.recv(4096) > # OSError: [Errno 9] Bad file descriptor > -- > http://mail.python.org/mailman/listinfo/python-list > -- http://mail.python.org/mailman/listinfo/python-list