2012-04-05 44 views
14

我需要幫助瞭解如何在Go中將進程妖魔化。Golang fork process

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() 
} 

如果啓動命令行程序返回控制這個代碼,但仍與CMD連接。關閉cmd關閉程序。

我該如何將它與cmd分離?添加:

procAttr.Sys.HideWindow = true 

導致此錯誤:「恐慌性」錯誤的內存指針

回答

10

我問 'golang-堅果',並發現golang有一個鏈接選項:

go tool 8l -o output.exe -Hwindowsgui input.8 
3
+2

是的,有些討論引提的懸而未決的問題,http://code.google.com/p/go/issues/detail? ID = 227 – Sonia 2012-04-05 17:02:42

2

這是假的守護進去;它的簡單易用:https://github.com/icattlecoder/godaemon

一個例子:

package main 

import (
    _ "github.com/icattlecoder/godaemon" 
    "log" 
    "net/http" 
) 

func main() { 
    mux := http.NewServeMux() 
    mux.HandleFunc("/index", func(rw http.ResponseWriter, req *http.Request) { 
     rw.Write([]byte("hello, golang!\n")) 
    }) 
    log.Fatalln(http.ListenAndServe(":7070", mux)) 
}