15

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

コマンド ラインでこのコードを開始すると、プログラムは制御を返しますが、cmd に接続されたままです。コマンドを閉じると、プログラムが閉じます。

どうすればcmdから切り離すことができますか? 追加:

procAttr.Sys.HideWindow = true

このエラーが発生します: "panic" to wrong memory pointer

4

2 に答える 2

10

「golang-nuts」で質問したところ、Go にはリンク オプションがあることがわかりました。

go tool 8l -o output.exe -Hwindowsgui input.8
于 2012-04-09T07:02:16.677 に答える
2

これは go の偽のデーモンです。使い方は簡単です: 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))
}
于 2014-06-29T14:07:12.300 に答える