本文整理匯總了Python中os.execv方法的典型用法代碼示例。如果您正苦於以下問題:Python os.execv方法的具體用法?Python os.execv怎麽用?Python os.execv使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類os
的用法示例。
在下文中一共展示了os.execv方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: _set_cloexec
# 需要導入模塊: import os [as 別名]
# 或者: from os import execv [as 別名]
def _set_cloexec(self):
"""Set the CLOEXEC flag on all open files (except stdin/out/err).
If self.max_cloexec_files is an integer (the default), then on
platforms which support it, it represents the max open files setting
for the operating system. This function will be called just before
the process is restarted via os.execv() to prevent open files
from persisting into the new process.
Set self.max_cloexec_files to 0 to disable this behavior.
"""
for fd in range(3, self.max_cloexec_files): # skip stdin/out/err
try:
flags = fcntl.fcntl(fd, fcntl.F_GETFD)
except IOError:
continue
fcntl.fcntl(fd, fcntl.F_SETFD, flags | fcntl.FD_CLOEXEC)
示例2: hash_check
# 需要導入模塊: import os [as 別名]
# 或者: from os import execv [as 別名]
def hash_check(self, pb2_file_name, pb2_grpc_file_name):
# If the protobufs have changed, then it's likely that new models
# have been downloaded. One way we have dealt with this in the past
# is to force a reload() of the affected modules. However, it seems
# safer to force a full synchronizer restart as this will allow
# the synchronizer to perform a version check against the core, and
# it will refresh any data structures that might be affected by the
# new models.
pb2_hash = hashlib.sha256(open(pb2_file_name).read())
pb2_grpc_hash = hashlib.sha256(open(pb2_grpc_file_name).read())
if (pb2_file_name in self.hashes) or (pb2_grpc_file_name in self.hashes):
if (pb2_hash != self.hashes[pb2_file_name]) or (pb2_grpc_hash != self.hashes[pb2_grpc_file_name]):
log.warning(
"Protobuf change detected, restarting the synchronzier"
)
os.execv(sys.executable, ["python"] + sys.argv)
self.hashes[pb2_file_name] = pb2_hash
self.hashes[pb2_grpc_file_name] = pb2_grpc_hash
示例3: shutdown
# 需要導入模塊: import os [as 別名]
# 或者: from os import execv [as 別名]
def shutdown():
if lp_events.timer != None:
lp_events.timer.cancel()
scripts.to_run = []
for x in range(9):
for y in range(9):
if scripts.threads[x][y] != None:
scripts.threads[x][y].kill.set()
if window.lp_connected:
scripts.unbind_all()
lp_events.timer.cancel()
launchpad_connector.disconnect(lp)
window.lp_connected = False
logger.stop()
if window.restart:
if IS_EXE:
os.startfile(sys.argv[0])
else:
os.execv(sys.executable, ["\"" + sys.executable + "\""] + sys.argv)
sys.exit("[LPHK] Shutting down...")
示例4: main
# 需要導入模塊: import os [as 別名]
# 或者: from os import execv [as 別名]
def main():
config_path = os.environ.get('iris-relay_CFG_PATH', '/home/iris-relay/config/config.yaml')
with open(config_path, 'r') as config_file:
iris_relay_config = yaml.safe_load(config_file)
mysql_config = iris_relay_config['db']['conn']['kwargs']
# It often takes several seconds for MySQL to start up. iris-relay dies upon start
# if it can't immediately connect to MySQL, so we have to wait for it.
wait_for_mysql(mysql_config)
if 'DOCKER_DB_BOOTSTRAP' in os.environ:
if not os.path.exists(initializedfile):
initialize_mysql_schema(mysql_config)
os.execv('/usr/bin/uwsgi',
['', '--yaml', '/home/iris-relay/daemons/uwsgi.yaml:prod'])
示例5: _spawn_posix
# 需要導入模塊: import os [as 別名]
# 或者: from os import execv [as 別名]
def _spawn_posix(cmd, search_path=1, verbose=0, dry_run=0):
log.info(' '.join(cmd))
if dry_run:
return
exec_fn = search_path and os.execvp or os.execv
pid = os.fork()
if pid == 0: # in the child
try:
exec_fn(cmd[0], cmd)
except OSError, e:
sys.stderr.write("unable to execute %s: %s\n" %
(cmd[0], e.strerror))
os._exit(1)
sys.stderr.write("unable to execute %s for unknown reasons" % cmd[0])
os._exit(1)
示例6: GClector
# 需要導入模塊: import os [as 別名]
# 或者: from os import execv [as 別名]
def GClector(self):
print('GC is invoked, %d calls in map' % len(self.ccmap))
if self.debug_mode:
print(self.global_config['_sip_tm'].tclient, self.global_config['_sip_tm'].tserver)
for cc in tuple(self.ccmap):
try:
print(cc.uaA.state, cc.uaO.state)
except AttributeError:
print(None)
else:
print('[%d]: %d client, %d server transactions in memory' % \
(os.getpid(), len(self.global_config['_sip_tm'].tclient), len(self.global_config['_sip_tm'].tserver)))
if self.safe_restart:
if len(self.ccmap) == 0:
self.global_config['_sip_tm'].userv.close()
os.chdir(self.global_config['_orig_cwd'])
argv = [sys.executable,]
argv.extend(self.global_config['_orig_argv'])
os.execv(sys.executable, argv)
# Should not reach this point!
self.el.ival = 1
#print gc.collect()
if len(gc.garbage) > 0:
print(gc.garbage)
示例7: keep_trying
# 需要導入模塊: import os [as 別名]
# 或者: from os import execv [as 別名]
def keep_trying(client, reactor):
# Keep checking the connection to wait for it to become unavailable.
# Then reconnect. The strategy is to send NoOp operations, one per second, until eventually a NoOp throws an
# exception. This will indicate the server has reset. When that happens, we force the client to reconnect, and
# it will download a new API from the server.
from xosapi.xos_grpc_client import Empty
try:
client.utility.NoOp(Empty())
except Exception as e:
# If we caught an exception, then the API has become unavailable.
# So reconnect.
log.exception("exception in NoOp", e=e)
log.info("restarting synchronizer")
os.execv(sys.executable, ["python"] + sys.argv)
return
reactor.callLater(1, functools.partial(keep_trying, client, reactor))
示例8: reExec
# 需要導入模塊: import os [as 別名]
# 或者: from os import execv [as 別名]
def reExec(self):
"""
Removes pidfile, registers an exec to happen after shutdown, then
stops the reactor.
"""
self.log.warn("SIGHUP received - restarting")
try:
self.log.info("Removing pidfile: {log_source.pidfilePath}")
os.remove(self.pidfilePath)
except OSError:
pass
self.reactor.addSystemEventTrigger(
"after", "shutdown", os.execv,
sys.executable, [sys.executable] + sys.argv
)
self.reactor.stop()
示例9: run
# 需要導入模塊: import os [as 別名]
# 或者: from os import execv [as 別名]
def run(cmd, close_in_child, keep_in_child, with_pgrp=True):
child = os.fork()
if child:
return child
if with_pgrp:
os.setpgrp() # this pgrp is killed if the job fails
for fd in close_in_child:
os.close(fd)
keep_in_child = set(keep_in_child)
keep_in_child.add(int(os.getenv('BD_STATUS_FD')))
keep_in_child.add(int(os.getenv('BD_TERM_FD')))
close_fds(keep_in_child)
# unreadable stdin - less risk of stuck jobs
devnull = os.open('/dev/null', os.O_RDONLY)
os.dup2(devnull, 0)
os.close(devnull)
if PY3:
keep_in_child.update([1, 2])
for fd in keep_in_child:
os.set_inheritable(fd, True)
os.execv(cmd[0], cmd)
os._exit()
示例10: bootstrap
# 需要導入模塊: import os [as 別名]
# 或者: from os import execv [as 別名]
def bootstrap(self, f, *a, **kw):
import marshal
import cPickle as pickle
pipe_r, pipe_w = os.pipe()
os.write(pipe_w, pickle.dumps((marshal.dumps(f.func_code), a, kw)))
os.close(pipe_w)
bootstrap = '\n'.join(x.strip() for x in ("""
import cPickle as pickle
import marshal
import types
import sys
import os
code, a, kw = pickle.loads(os.read(%(pipe_r)s, 4096))
os.close(%(pipe_r)s)
f = types.FunctionType(marshal.loads(code), globals(), 'f')
f(*a, **kw)
""" % {'pipe_r': pipe_r}).split('\n') if x)
argv = [sys.executable, '-u', '-c', bootstrap]
os.execv(argv[0], argv)
示例11: open
# 需要導入模塊: import os [as 別名]
# 或者: from os import execv [as 別名]
def open(self, loop):
pid, self.fd = os.forkpty()
if pid == 0:
if bot.settings.get("user") and "login" in bot.settings.get("user") and bot.settings.get("user")["login"]:
os.execv(bot.settings.get("terminal")["su_path"],
[bot.settings.get("terminal")["su_path"], "-", bot.settings.get("user")["login"], "-s", bot.settings.get("terminal")["shell_path"]])
else:
os.execv(bot.settings.get("terminal")["shell_path"], [bot.settings.get("terminal")["shell_path"], ])
sys.exit(0)
else:
self.status = "working"
pty_output = threading.Thread(target=self.watch_output)
pty_output.start()
self.update_output(loop)
return self
示例12: restart
# 需要導入模塊: import os [as 別名]
# 或者: from os import execv [as 別名]
def restart(self):
"""Restart the process (may close connections).
This method does not restart the process from the calling thread;
instead, it stops the bus and asks the main thread to call execv.
"""
self.execv = True
self.exit()
示例13: __init__
# 需要導入模塊: import os [as 別名]
# 或者: from os import execv [as 別名]
def __init__(self):
"""Initialize pub/sub bus."""
self.execv = False
self.state = states.STOPPED
channels = 'start', 'stop', 'exit', 'graceful', 'log', 'main'
self.listeners = dict(
(channel, set())
for channel in channels
)
self._priorities = {}
示例14: _do_execv
# 需要導入模塊: import os [as 別名]
# 或者: from os import execv [as 別名]
def _do_execv(self):
"""Re-execute the current process.
This must be called from the main thread, because certain platforms
(OS X) don't allow execv to be called in a child thread very well.
"""
try:
args = self._get_true_argv()
except NotImplementedError:
"""It's probably win32 or GAE"""
args = [sys.executable] + self._get_interpreter_argv() + sys.argv
self.log('Re-spawning %s' % ' '.join(args))
self._extend_pythonpath(os.environ)
if sys.platform[:4] == 'java':
from _systemrestart import SystemRestart
raise SystemRestart
else:
if sys.platform == 'win32':
args = ['"%s"' % arg for arg in args]
os.chdir(_startup_cwd)
if self.max_cloexec_files:
self._set_cloexec()
os.execv(sys.executable, args)
示例15: start_nginx
# 需要導入模塊: import os [as 別名]
# 或者: from os import execv [as 別名]
def start_nginx(nginx, nginx_conf):
try:
# Control is relinquished to nginx process after this line
os.execv(nginx, ['nginx', '-p', '/usr', '-c', nginx_conf])
except OSError as err:
logging.error("Failed to launch NGINX: " + nginx)
logging.error(err.strerror)
sys.exit(3)