doutan3040 2012-04-05 11:11
浏览 32
已采纳

如何派生流程

I need help understanding how to demonize a process in Go.

package main

import (
   "fmt"
   "os"
)

func start() {
   var procAttr os.ProcAttr 
   procAttr.Files = []*os.File{nil, nil, nil}
   _, err := os.StartProcess("/Path/prog", nil, &procAttr)
   if err != nil {
       fmt.Printf("%v", err)
   }
}


func main () {
   start()
} 

If you start this code on the command line the program returns control, but is still connected with cmd. Closing the cmd closes the program.

How can I decouple it from the cmd? Adding:

procAttr.Sys.HideWindow = true

Results in this error: "panic" to wrong memory pointer

  • 写回答

3条回答 默认 最新

  • doumouyi4039 2012-04-09 07:02
    关注

    I asked in 'golang-nuts', and found out that golang has a link option:

    go tool 8l -o output.exe -Hwindowsgui input.8
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?