$ cat test.py import sys print sys.stdin.readline() $ python test.py | python test.py Traceback (most recent call last): File "test.py", line 2, in ? print sys.stdin.readline() IOError: [Errno 35] Resource temporarily unavailable This happens about 3 times out of 5. It happens under FreeBSD 5.1-RELEASE (SMP) and: python-2.1.3 python-2.2.3 python-2.3.2 python-2.3.3c1 It does _not_ happen under Debian 3.0 or FreeBSD 4.7-RELEASE (SMP). According to read(2) this "error" should occur only when the descriptor is in non-blocking mode. However as you can see from the program it isn't. Further I have caught the IOError and run fcntl(F_GETFL) on sys.stdin.fileno() and the only flag set is O_RDWR.
Logged In: YES user_id=55188 I could not reproduce the error on several versions of FreeBSD: 5.2-BETA Thu Dec 4 21:59:16 KST 2003 i386 (non-SMP) 5.2-CURRENT Sat Dec 13 08:02:47 PST 2003 alpha (SMP) 5.2-CURRENT Tue Dec 9 02:39:36 PST 2003 ia64 (SMP) 5.2-CURRENT Sat Dec 13 07:52:29 PST 2003 i386 (SMP) 5.1-RELEASE Sat Jun 14 05:13:38 KST 2003 i386 (SMP) Do you have any uncommon factor of environment? (and did you install the python via ports?)
Logged In: YES user_id=639616 All my python versions are compiled from source. Further, since the problem only occur some of the time and only on some of the platforms, it's natural to suspect foul play from the runtime environment (i.e shell, OS) and that it might not be a bug in python. It's not like blocking input should be a black art. I refuse to believe that this issue has never been raised before and subsequently solved. It's just a matter of finding the right mailing list archive. The alternative seems to be hacking the interpreter and try to narrow it down.