本文整理汇总了Python中Trace.touch_trace方法的典型用法代码示例。如果您正苦于以下问题:Python Trace.touch_trace方法的具体用法?Python Trace.touch_trace怎么用?Python Trace.touch_trace使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Trace
的用法示例。
在下文中一共展示了Trace.touch_trace方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: start
# 需要导入模块: import Trace [as 别名]
# 或者: from Trace import touch_trace [as 别名]
def start(self, name, program, *args, **kargs):
tracedir = kargs.get("trace_dir")
appdir = kargs.get("app_dir")
pidfile = joinpths(tracedir, name + ".pid")
stderr = joinpths(tracedir, name + ".stderr")
stdout = joinpths(tracedir, name + ".stdout")
tracefn = Trace.trace_fn(tracedir, name)
tracefn = Trace.touch_trace(tracedir, name)
runtrace = Trace.Trace(tracefn)
runtrace.trace(RUN, RUN_TYPE)
runtrace.trace(PID_FN, pidfile)
runtrace.trace(STDERR_FN, stderr)
runtrace.trace(STDOUT_FN, stdout)
#fork to get daemon out
pid = os.fork()
if(pid == 0):
os.setsid()
pid = os.fork()
#fork to get daemon out - this time under init control
#and now fully detached (no shell possible)
if(pid == 0):
#move to where application should be
os.chdir(appdir)
#close other fds
limits = resource.getrlimit(resource.RLIMIT_NOFILE)
mkfd = limits[1]
if(mkfd == resource.RLIM_INFINITY):
mkfd = MAXFD
for fd in range(0, mkfd):
try:
os.close(fd)
except OSError:
#not open, thats ok
pass
#now adjust stderr and stdout
stdoh = open(stdout, "w")
stdeh = open(stderr, "w")
os.dup2(stdoh.fileno(), sys.stdout.fileno())
os.dup2(stdeh.fileno(), sys.stderr.fileno())
#now exec...
#the arguments to the child process should
#start with the name of the command being run
actualargs = [program] + list(args)
os.execlp(program, *actualargs)
else:
#write out the child pid
contents = str(pid) + "\n"
write_file(pidfile, contents)
#not exit or sys.exit, this is recommended
#since it will do the right cleanups that we want
#not calling any atexit functions, which would
#be bad right now
os._exit(0)
else:
return tracefn