bug in Python's read function (trying again)
Chris Jaeger
cjaeger at ensim.com
Fri Oct 26 15:31:25 EDT 2001
More information about the Python-list mailing list
Fri Oct 26 15:31:25 EDT 2001
- Previous message (by thread): [Q] sys.path
- Next message (by thread): namespaces for XMLWriter
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi all, Having looked at the python 2.1.1 implementation of file_read (which provides the read function for python file objects), I think I've discovered a bug, unless this behavior is really intended. file_read calls fread multiple times in order to try to fill the request of the caller. Each time fread returns, whatever data is returned is tacked onto whatever was returned before. If some call to fread after the first call returns an error, then an exception is raised and any data already read is lost. This may be fine for regular files that you can seek on, but for other sources of data (such as that belonging to the output from commands), this won't work. This can be reproduced fairly easily by setting O_NONBLOCK on the file descriptor you are reading. So, is this a bug, or is this done by design? If you are monitoring both stdout and stderr, you need to set O_NONBLOCK on the files to prevent deadlock. Perhaps on error file_read should set a bit indicating that it should fail on the next invocation, as opposed to throwing away the data read during the current invocation.. Thanks, Chris
- Previous message (by thread): [Q] sys.path
- Next message (by thread): namespaces for XMLWriter
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list