我有一个名为'b.py'的Python脚本,每5秒打印一次时间。
我有两个问题。 1. 为什么我看不到“b.py”的任何输出,当我执行“ps -efW”时,我也看不到名为“b.py”的进程? 2. 为什么当我像上面那样杀死一个进程时,会看到“权限被拒绝”的消息?
我在Windows下的Cygwin上运行以上脚本。
谢谢。
while (1):
print "Start : %s" % time.ctime()
time.sleep( 5 )
print "End : %s" % time.ctime()
time.sleep( 5 )
在我的a.py文件中,我通过以下方式调用b.py:
def run_b():
print "Calling run b"
try:
cmd = ["./b.py"]
p = subprocess.Popen(cmd,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
for line in iter(p.stdout.readline, b''):
print (">>>" + line.rstrip())
except OSError as e:
print >>sys.stderr, "fcs Execution failed:", e
return None
随后,我通过以下方式杀死'b.py': PS_PATH = "/usr/bin/ps -efW"
def kill_b(program):
try:
cmd = shlex.split(PS_PATH)
retval = subprocess.check_output(cmd).rstrip()
for line in retval.splitlines():
if program in line:
print "line =" + line
pid = line.split(None)[1]
os.kill(int(pid), signal.SIGKILL)
except OSError as e:
print >>sys.stderr, "kill_all Execution failed:", e
except subprocess.CalledProcessError as e:
print >>sys.stderr, "kill_all Execution failed:", e
run_b()
time.sleep(600)
kill_b("b.py")
我有两个问题。 1. 为什么我看不到“b.py”的任何输出,当我执行“ps -efW”时,我也看不到名为“b.py”的进程? 2. 为什么当我像上面那样杀死一个进程时,会看到“权限被拒绝”的消息?
我在Windows下的Cygwin上运行以上脚本。
谢谢。
b.py
的执行是在开始读取b.py
的输出和调用p.kill(); p.wait()
之前,从run_b()
中返回p
。 - jfs./b.py
是否成功启动(p.poll()
应该为None
)。 - jfs