process.py 文件源码

python
阅读 32 收藏 0 点赞 0 评论 0

项目:clusterfuzz-tools 作者: google 项目源码 文件源码
def call(cmd, cwd='.', env=None, capture=False, raise_on_error=True,
         timeout=DEFAULT_TIMEOUT):
  """Call invoke command with additional envs and return output."""
  env = env or {}
  env_str = ' '.join(
      ['%s="%s"' % (k, v) for k, v in env.iteritems()])
  print ('Running:\n  cmd: %s %s\n  cwd: %s' % (env_str, cmd, cwd)).strip()

  final_env = os.environ.copy()
  final_env.update(env)

  with Popen(
      cmd, shell=True, cwd=cwd, env=final_env, preexec_fn=os.setsid,
      stdout=subprocess.PIPE if capture else None) as proc:
    threading.Thread(target=kill_when_timeout, args=(proc, timeout)).start()
    out, _ = proc.communicate()

    if proc.returncode != 0 and raise_on_error:
      raise subprocess.CalledProcessError(
          returncode=proc.returncode, cmd=cmd, output=out)

    return proc.returncode, out
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号