好的,这是一个棘手的问题。我需要启动一个后台进程,它将(1)等待N秒,然后(2)执行一些命令。另外,我需要捕获后台进程本身的pid,因为当父进程结束时它会在必要时终止后台进程。它在外壳语法上看起来有点像这样:如何通过延迟调用在Python中启动后台进程?
(sleep 15 && run_some_cmd) & # launch bg process
bg_pid=$! # capture the bg pid
# do some stuff here...
kill -9 $bg_pid # and kill the bg_pid if necessary
这就是shell中的启动。但是,我试图用Python来做到这一点。棘手的是,因为我需要捕获bg pid,所以我不能使用os.system()或os.fork(),因为在每种情况下父进程都无法访问子进程的pid。我试图让它与subprocess.Popen()一起工作,但考虑到“sleep 15”部分,它有点棘手。
任何想法?