mercurial/worker.py
changeset 30422 7bc25549e084
parent 30421 47de34f79f93
child 30423 9c25a1a8c685
equal deleted inserted replaced
30421:47de34f79f93 30422:7bc25549e084
    95             try:
    95             try:
    96                 os.kill(p, signal.SIGTERM)
    96                 os.kill(p, signal.SIGTERM)
    97             except OSError as err:
    97             except OSError as err:
    98                 if err.errno != errno.ESRCH:
    98                 if err.errno != errno.ESRCH:
    99                     raise
    99                     raise
   100     def waitforworkers():
   100     def waitforworkers(blocking=True):
   101         for pid in pids:
   101         for pid in pids:
   102             st = _exitstatus(os.waitpid(pid, 0)[1])
   102             p, st = os.waitpid(pid, 0 if blocking else os.WNOHANG)
       
   103             if p:
       
   104                 st = _exitstatus(st)
   103             if st and not problem[0]:
   105             if st and not problem[0]:
   104                 problem[0] = st
   106                 problem[0] = st
   105                 killworkers()
   107                 killworkers()
   106     for pargs in partition(args, workers):
   108     for pargs in partition(args, workers):
   107         pid = os.fork()
   109         pid = os.fork()