2012-04-05 31 views
14

Tôi cần trợ giúp để hiểu cách xử lý một quy trình trong Go.Quy trình ngã ba Golang

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

Nếu bạn bắt đầu mã này trên dòng lệnh chương trình trả về điều khiển nhưng vẫn được kết nối với cmd. Đóng cmd đóng chương trình.

Làm cách nào để tách nó khỏi cmd? Thêm:

procAttr.Sys.HideWindow = true 

Kết quả trong lỗi này: "hoảng loạn" để con trỏ bộ nhớ sai

Trả lời

10

Tôi hỏi trong 'golang-hạt', và phát hiện ra rằng golang có một tùy chọn liên kết:

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

Vâng, và một số các cuộc thảo luận trích dẫn đề cập đến vấn đề mở, http://code.google.com/p/go/issues/detail? id = 227 – Sonia

2

Đây là một daemon giả đi; nó đơn giản để sử dụng: https://github.com/icattlecoder/godaemon

Một ví dụ:

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)) 
} 
Các vấn đề liên quan