我有一个脚本,可以选择在完成后运行第二个脚本。我想知道是否有一个好方法让第二个脚本知道它是自己运行还是作为子进程运行。如果它被称为子进程,则将args传递给第二个脚本。
第一个脚本的结尾如下:
dlg = wx.MessageDialog(None, "Shall we format?",'Format Files',wx.YES_NO | wx.ICON_QUESTION)
result = dlg.ShowModal()
if result == wx.ID_YES:
call("Threading.py", shell=True)
else:
pass
第二个脚本是一个独立的脚本,它接收3个文件并将它们格式化为一个文件。 args只会在第二个脚本中设置文件名。
答案 0 :(得分:1)
因此,我将使用os.getppid()
检索父进程pid,然后使用Popen
将其作为参数传递给子进程:
(parent.py)
#!/usr/bin/env python
import sys
import os
from subprocess import Popen, PIPE
output = Popen(['./child.py', str( os.getppid() )], stdout=PIPE)
print output.stdout.read()
和
(child.py)
#!/usr/bin/env python
import sys
import os
parent_pid = sys.argv[1]
my_pid = str(os.getppid())
print "Parent is %s child is %s " % ( parent_pid, my_pid )
所以当你从父母那里打电话给孩子时
$ ./parent.py
Parent is 72297 child is 72346
此时很容易进行比较并检查pid。