os.fork() question?
Andrew MacIntyre
andymac at bullseye.apana.org.au
Thu Sep 16 09:01:10 EDT 2004
More information about the Python-list mailing list
Thu Sep 16 09:01:10 EDT 2004
- Previous message (by thread): os.fork() question?
- Next message (by thread): How to change the superclass of an instance?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Wed, 14 Sep 2004, Ishwar Rattan wrote: > Erik Heneryd <erik at heneryd.com> wrote in message news:<mailman.3271.1095110255.5135.python-list at python.org>... > > Ishwar Rattan wrote: > > > Info at http://doc.python.org/ on os.fork() says that > > > it has 'unix' semantics (on a UNIX box) on return values > > > child pid in parent, 0 in child, no mention of failure? > > > > > > So, what does it return on failure? I tried it under Linux > > > with Python-2.3.4, after few thousand forks the system just hangs! > > > (does not return/report fork failure) > > > > It raises OSError. > > > The following code when executed kills controlling xterm+X-window system, > but the system does not hang. > > -ishwar > --- > import os, signal, sys, time > > def child(): > signal.pause() > print 'this from child with pid: ', os.getpid() > sys.exit(2) > > def main(): > print 'forking child..' > while 1: > try: > cpid = os.fork() > except OSError: > raise 'fork failed..' > if cpid == 0: > child() > else: > print 'fork success..', cpid > > main() You don't give much detail about your Linux environment, but be aware: - Python by default is built with threading; - signals in the presence of threads are a potential issue, even though the above code doesn't activate threads, because your Python process is using the threaded C library; - ditto fork(); - various thread implementations have had bugs at various times in relation to signals and process management; - the above code may be being treated as a "fork bomb" by Linux; in which case, the Python process(es) is/are summarily killed, possibly leaving lots of zombie processes around.... You may care to try building a Python interpreter without threads support to test whether the some of the issues I mention above are implicated. ------------------------------------------------------------------------- Andrew I MacIntyre "These thoughts are mine alone..." E-mail: andymac at bullseye.apana.org.au (pref) | Snail: PO Box 370 andymac at pcug.org.au (alt) | Belconnen ACT 2616 Web: http://www.andymac.org/ | Australia
- Previous message (by thread): os.fork() question?
- Next message (by thread): How to change the superclass of an instance?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list