def start_new_process(args, nice_value=0):
"start a new process in a pty and renice it"
data = {}
data['start_time'] = time.time()
pid, master_fd = pty.fork()
if pid == CHILD:
default_signals()
if nice_value:
os.nice(nice_value)
os.execvp(args[0], [a.encode(cf['_charset'], "replace") for a in args])
else:
data['pid'] = pid
if os.uname()[0] == "Linux":
fcntl.fcntl(master_fd, F_SETFL, O_NONBLOCK)
data['fd'] = master_fd
data['file'] = os.fdopen(master_fd)
data['cmd'] = args
data['buf'] = ""
data['otf'] = 0
data['percent'] = 0
data['elapsed'] = 0
return data
评论列表
文章目录