我正在启动一个 ssh 命令,该命令将自己 fork 出来,即使在脚本完成后也会运行。所以代码看起来像这样:
ssh_proc = Popen(['ssh', '-f', '-N', '-L', local_forward, local_user_host], stdin=PIPE, stdout=PIPE)
print ssh_proc.pid
stat = ssh_proc.poll()
如您所见,ssh -f 将 ssh fork 为一个进程并在脚本完成后运行 - 我需要获取该 ssh 进程的 pid。上面的打印语句,只会打印出 Popen 进程的 pid。有什么建议吗?>
请您参考如下方法:
虽然您已将 -f 开关传递给 ssh,但您的程序无法控制(也未获悉)ssh 程序本身执行的事件。您的程序没有直接方法来发现 ssh 已经 fork 并找到第二个子 pid。
但是,可能有一种间接的方式来获取这些信息。您可以枚举事件进程并查找其parent 为ssh_proc.pid 的进程。
