我正在通过golang应用程序创建进程,并且希望子进程在该应用程序存在时消失。
这是我启动程序的代码:
func startProcess(args ...string) (p *os.Process, err error) {
if args[0], err = exec.LookPath(args[0]); err == nil {
fileName := filepath.Base(args[0])
var procAttr os.ProcAttr
procAttr.Files = []*os.File{nil, nil, nil}
procAttr.Dir = filepath.Dir(args[0])
procAttr.Sys = &syscall.SysProcAttr{
HideWindow: true,
}
p, err := os.StartProcess(fileName, args, &procAttr)
if err == nil {
return p, nil
}
}
return nil, err
}
我检查了任务管理器:当父进程仍在运行时,我看不到列表中的子进程,但我知道该子进程已在运行。但是当我离开父母时,孩子突然出现在任务管理器中,而不是与父母同死。为什么?