子进程在应用程序退出时被释放

时间:2019-04-01 18:45:04

标签: windows go

我正在通过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
}

我检查了任务管理器:当父进程仍在运行时,我看不到列表中的子进程,但我知道该子进程已在运行。但是当我离开父母时,孩子突然出现在任务管理器中,而不是与父母同死。为什么?

0 个答案:

没有答案
相关问题