2015-01-05 56 views
4

我見過很多不同的關於如何守護使用Go編寫的應用程序的建議,包括使用upstart或init.d.爲什麼不自己動手呢?這似乎是步驟很簡單:我可以在沒有外部工具的情況下守護golang進程嗎?

  • 叉子和退出父
  • 更改文件模式掩碼
  • 創建一個唯一的會話ID
  • 改變當前的工作目錄
  • 關閉文件描述符

source

那麼爲什麼不在你的程序中這樣做,而不是依靠第三方軟件爲你完成一項簡單的任務呢?

+0

'init.d'只是守護進程管理器,它不daemonise。 Debian上的所有守護進程都應該和'init.d'搭配使用。至於爲什麼它似乎很難,看看[這個公開的問題](https://github.com/golang/go/issues/227)。 – Amadan

+1

分叉Go程序是不安全的。 –

回答

1

從Go程序直接與fork()混淆非常危險。基於等效C程序的典型deamonize實現是不安全的。

你可能有興趣通過以下程序包所使用的方法: https://github.com/VividCortex/godaemon

相關問題