【问题标题】:How to fork a process如何分叉一个进程
【发布时间】:2012-04-19 03:02:21
【问题描述】:

我需要帮助了解如何在 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关闭程序。

如何将它与 cmd 分离?添加:

procAttr.Sys.HideWindow = true

导致此错误:“恐慌”到错误的内存指针

【问题讨论】:

    标签: fork go


    【解决方案1】:

    我在 'golang-nuts' 中询问,发现 Go 有一个链接选项:

    go tool 8l -o output.exe -Hwindowsgui input.8
    

    【讨论】:

    • 8l 被移除了,更新的方法是什么?
    【解决方案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))
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-26
      • 2017-05-03
      • 2012-02-27
      • 2021-05-31
      • 2015-08-02
      • 2011-06-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多