github.com/elves/elvish@v0.15.0/pkg/daemon/spawn_windows.go (about)

     1  package daemon
     2  
     3  import (
     4  	"os"
     5  	"syscall"
     6  )
     7  
     8  // A subset of possible process creation flags, value taken from
     9  // https://msdn.microsoft.com/en-us/library/windows/desktop/ms684863(v=vs.85).aspx
    10  const (
    11  	CREATE_BREAKAWAY_FROM_JOB = 0x01000000
    12  	CREATE_NEW_PROCESS_GROUP  = 0x00000200
    13  	DETACHED_PROCESS          = 0x00000008
    14  
    15  	daemonCreationFlags = CREATE_BREAKAWAY_FROM_JOB | CREATE_NEW_PROCESS_GROUP | DETACHED_PROCESS
    16  )
    17  
    18  func procAttrForSpawn(files []*os.File) *os.ProcAttr {
    19  	return &os.ProcAttr{
    20  		Dir:   `C:\`,
    21  		Env:   []string{"SystemRoot=" + os.Getenv("SystemRoot")}, // SystemRoot is needed for net.Listen for some reason
    22  		Files: files,
    23  		Sys:   &syscall.SysProcAttr{CreationFlags: daemonCreationFlags},
    24  	}
    25  }