2012-04-05 10 views
14

Potrzebuję pomocy w zrozumieniu sposobu demonizacji procesu w Go.Proces widełek Golanga

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

Jeśli zaczniesz ten kod w wierszu polecenia program sterowanie powraca, ale jest nadal połączony z cmd. Zamknięcie cmd zamyka program.

Jak mogę odłączyć go od cmd? Dodając:

procAttr.Sys.HideWindow = true 

wyników w tym błędzie: „panika”, aby wskaźnik źle pamięci

Odpowiedz

10

spytałem 'golang orzechów', i okazało się, ten golang ma opcję linku:

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

Tak, a niektóre z dyskusji cytowane wspomnieć otwartą kwestię, http://code.google.com/p/go/issues/detail? id = 227 – Sonia

2

Oto fałszywy demon w programie go; to proste w użyciu: https://github.com/icattlecoder/godaemon

przykład:

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)) 
} 
Powiązane problemy