shell.py 文件源码

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

项目:deb-python-rjsmin 作者: openstack 项目源码 文件源码
def spawn(*argv, **kwargs):
    """ Spawn a process """
    try:
        import subprocess
    except ImportError:
        subprocess = None

    if _sys.platform == 'win32':
        newargv = []
        for arg in argv:
            if not arg or ' ' in arg or arg.startswith('"'):
                arg = '"%s"' % arg.replace('"', '\\"')
            newargv.append(arg)
        argv = newargv
        close_fds = False
        shell = True
    else:
        close_fds = True
        shell = False

    env = kwargs.get('env')
    if env is None:
        env = dict(_os.environ)
    if 'X_JYTHON_WA_PATH' in env:
        env['PATH'] = env['X_JYTHON_WA_PATH']

    echo = kwargs.get('echo')
    if echo:
        print ' '.join(argv)
    filepipe = kwargs.get('filepipe')
    if filepipe:
        return _filepipespawn(
            kwargs.get('stdin'), kwargs.get('stdout'), argv, env
        )
    pipe = kwargs.get('stdout')
    if pipe:
        return _pipespawn(argv, env)

    if subprocess is None:
        pid = _os.spawnve(_os.P_NOWAIT, argv[0], argv, env)
        return _os.waitpid(pid, 0)[1]
    else:
        p = subprocess.Popen(argv, env=env, shell=shell, close_fds=close_fds)
        return p.wait()
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号