看起来如果您通过exec.Cmd和Start()创建一个子进程,该Cmd.Process
字段会立即填充,但Cmd.ProcessState
字段会保留nil
到进程退出为止。
// ProcessState contains information about an exited process,
// available after a call to Wait or Run.
ProcessState *os.ProcessState
Start()
所以看起来我实际上无法检查我编辑的进程仍在运行时的状态?
ProcessState
当进程退出时,设置对我来说毫无意义。在这种情况下,有一个ProcessState.Exited()方法将始终返回true
。
所以我尝试走这条路线:cmd.Process.Pid
field 在 I 之后就存在cmd.Start()
,但是看起来os.Process没有公开任何机制来检查进程是否正在运行。
os.FindProcess说:
在 Unix 系统上,FindProcess 始终成功并返回给定 pid 的进程,无论该进程是否存在。
这是没有用的——而且似乎没有办法从os.Process转到os.ProcessState除非你.Wait()
违背了整个目的(我想知道进程在退出之前是否正在运行)。
牛魔王的故事
相关分类