multiprocessing module and os.close(sys.stdin.fileno())

Graham Dumpleton Graham.Dumpleton at gmail.com
Tue Feb 17 22:34:39 EST 2009


Why is the multiprocessing module, ie., multiprocessing/process.py, in
_bootstrap() doing:

  os.close(sys.stdin.fileno())

rather than:

  sys.stdin.close()

Technically it is feasible that stdin could have been replaced with
something other than a file object, where the replacement doesn't have
a fileno() method.

In that sort of situation an AttributeError would be raised, which
isn't going to be caught as either OSError or ValueError, which is all
the code watches out for.

Graham



More information about the Python-list mailing list