golang 中创建daemon的方法
https://github.com/takama/daemon
https://github.com/immortal/immortal/blob/master/fork.go 这个是比较原始的最接近c语言的实现,它里面还有很多原始c语言的东西的golang实现:
// fork.go
package immortal import ( "os" "os/exec" "syscall" ) // Fork crete a new process func Fork() (int, error) { args := os.Args[1:] cmd := exec.Command(os.Args[0], args...) cmd.Env = os.Environ() cmd.Stdin = nil cmd.Stdout = nil cmd.Stderr = nil cmd.ExtraFiles = nil cmd.SysProcAttr = &syscall.SysProcAttr{ // Setsid is used to detach the process from the parent (normally a shell) // // The disowning of a child process is accomplished by executing the system call // setpgrp() or setsid(), (both of which have the same functionality) as soon as // the child is forked. These calls create a new process session group, make the // child process the session leader, and set the process group ID to the process // ID of the child. https://bsdmag.org/unix-kernel-system-calls/ Setsid: true, } if err := cmd.Start(); err != nil { return 0, err } return cmd.Process.Pid, nil }
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
支付宝扫一扫捐赠
支付宝扫一扫捐赠
微信公众号: 共鸣圈
欢迎讨论,邮件: 924948$qq.com 请把$改成@
QQ群:263132197
QQ: 924948