我们从Python开源项目中,提取了以下7个代码示例,用于说明如何使用os.spawnlp()。
def start(ctx, system=True): """ Start both Nginx and Gunicorn under Circus supervision (#TODO!). """ # os.execlp('circusd', '--daemon', '/etc/circus.ini') #os.spawnlp(os.P_NOWAIT, 'nginx', '-p', '/var/www', '-c', '/etc/nginx/nginx.conf') wsgi = os.environ.get('WSGI_APPLICATION', 'app') if system: ctx.run('nginx -p /var/www -c /etc/nginx/nginx.conf') ctx.run('gunicorn -b unix:/tmp/webapp.sock %s --reload' % wsgi, pty=True) else: ctx.run('nginx -p /var/www -c /etc/nginx/nginx.conf') sock = 'unix:/tmp/gunicorn.sock' os.execlp('gunicorn', '-b', sock, wsgi, '--reload')
def run(program, *args): """Spawns a the given program as a subprocess and waits for its exit""" # I for Invariant argument count, P for using PATH environmental variable os.spawnlp(os.P_WAIT, program, program, *args)
def create_spawnl(original_name): def new_spawnl(mode, path, *args): """ os.spawnl(mode, path, arg0, arg1, ...) os.spawnlp(mode, file, arg0, arg1, ...) """ import os args = patch_args(args) send_process_created_message() return getattr(os, original_name)(mode, path, *args) return new_spawnl
def patch_new_process_functions_with_warning(): monkey_patch_os('execl', create_warn_multiproc) monkey_patch_os('execle', create_warn_multiproc) monkey_patch_os('execlp', create_warn_multiproc) monkey_patch_os('execlpe', create_warn_multiproc) monkey_patch_os('execv', create_warn_multiproc) monkey_patch_os('execve', create_warn_multiproc) monkey_patch_os('execvp', create_warn_multiproc) monkey_patch_os('execvpe', create_warn_multiproc) monkey_patch_os('spawnl', create_warn_multiproc) monkey_patch_os('spawnle', create_warn_multiproc) monkey_patch_os('spawnlp', create_warn_multiproc) monkey_patch_os('spawnlpe', create_warn_multiproc) monkey_patch_os('spawnv', create_warn_multiproc) monkey_patch_os('spawnve', create_warn_multiproc) monkey_patch_os('spawnvp', create_warn_multiproc) monkey_patch_os('spawnvpe', create_warn_multiproc) if sys.platform != 'win32': monkey_patch_os('fork', create_warn_multiproc) try: import _posixsubprocess monkey_patch_module(_posixsubprocess, 'fork_exec', create_warn_fork_exec) except ImportError: pass else: # Windows try: import _subprocess except ImportError: import _winapi as _subprocess monkey_patch_module(_subprocess, 'CreateProcess', create_CreateProcessWarnMultiproc)
def tearDown(self): """ Un-load the launchd job and report any errors it encountered. """ os.spawnlp(os.P_WAIT, "launchctl", "launchctl", "unload", self.job.path) err = self.stderr.getContent() if 'Traceback' in err: self.fail(err)
def casalogger(logfile=''): """ Spawn a new casalogger using logfile as the filename. You should only call this if the casalogger dies or you close it and restart it again. Note: if you changed the name of the log file using casalog.setlogfile you will need to respawn casalogger with the new log filename. Eventually, we will figure out how to signal the casalogger with the new name but not for a while. """ if logfile == '': if casa.has_key('files') and casa['files'].has_key('logfile') : logfile = casa['files']['logfile'] else: casa['files']['logfile'] = os.getcwd( ) + '/casa.log' logfile = 'casa.log' pid=9999 if (os.uname()[0]=='Darwin'): if casa['helpers']['logger'] == 'console': os.system("open -a console " + logfile) else: # XCode7 writes debug messages to stderr, which then end up in the # Casa console. Hence the stderr is directed to devnull #pid=os.spawnvp(os.P_NOWAIT,casa['helpers']['logger'],[casa['helpers']['logger'], logfile]) DEVNULL = open(os.devnull, 'w') pid = Popen([casa['helpers']['logger'],logfile], stderr=DEVNULL).pid #pid = Popen([casa['helpers']['logger'],logfile], stdin=PIPE, stdout=FNULL, stderr=STDOUT).pid elif (os.uname()[0]=='Linux'): pid=os.spawnlp(os.P_NOWAIT,casa['helpers']['logger'],casa['helpers']['logger'],logfile) else: print 'Unrecognized OS: No logger available' if (pid!=9999): logpid.append(pid)
def patch_new_process_functions(): # os.execl(path, arg0, arg1, ...) # os.execle(path, arg0, arg1, ..., env) # os.execlp(file, arg0, arg1, ...) # os.execlpe(file, arg0, arg1, ..., env) # os.execv(path, args) # os.execve(path, args, env) # os.execvp(file, args) # os.execvpe(file, args, env) monkey_patch_os('execl', create_execl) monkey_patch_os('execle', create_execl) monkey_patch_os('execlp', create_execl) monkey_patch_os('execlpe', create_execl) monkey_patch_os('execv', create_execv) monkey_patch_os('execve', create_execve) monkey_patch_os('execvp', create_execv) monkey_patch_os('execvpe', create_execve) # os.spawnl(mode, path, ...) # os.spawnle(mode, path, ..., env) # os.spawnlp(mode, file, ...) # os.spawnlpe(mode, file, ..., env) # os.spawnv(mode, path, args) # os.spawnve(mode, path, args, env) # os.spawnvp(mode, file, args) # os.spawnvpe(mode, file, args, env) monkey_patch_os('spawnl', create_spawnl) monkey_patch_os('spawnle', create_spawnl) monkey_patch_os('spawnlp', create_spawnl) monkey_patch_os('spawnlpe', create_spawnl) monkey_patch_os('spawnv', create_spawnv) monkey_patch_os('spawnve', create_spawnve) monkey_patch_os('spawnvp', create_spawnv) monkey_patch_os('spawnvpe', create_spawnve) if sys.platform != 'win32': monkey_patch_os('fork', create_fork) try: import _posixsubprocess monkey_patch_module(_posixsubprocess, 'fork_exec', create_fork_exec) except ImportError: pass else: # Windows try: import _subprocess except ImportError: import _winapi as _subprocess monkey_patch_module(_subprocess, 'CreateProcess', create_CreateProcess)