def _setPgid(pid, pgid):
"""set pgid of a process, ignored exception caused by race condition
that occurs if already set by parent or child has already existed"""
# Should just ignore on EACCES, as to handle race condition with parent
# and child. However some Linux kernels (seen in 2.6.18-53) report ESRCH
# or EPERM. To handle this is a straight-forward way, just check that the
# change has been made. However, in some cases the change didn't take,
# retrying seems to make the problem go away.
for i in xrange(0,5):
try:
os.setpgid(pid, pgid)
return
except OSError:
if os.getpgid(pid) == pgid:
return
time.sleep(0.25) # sleep for retry
# last try, let it return an error
os.setpgid(pid, pgid)
# FIXME: why not use pipes.quote?
pipeline.py 文件源码
python
阅读 24
收藏 0
点赞 0
评论 0
评论列表
文章目录