MCPcopy Create free account
hub / github.com/GoEdgeLab/EdgeNode / Daemon

Method Daemon

internal/nodes/node.go:249–299  ·  view source on GitHub ↗

Daemon 实现守护进程

()

Source from the content-addressed store, hash-verified

247
248// Daemon 实现守护进程
249func (this *Node) Daemon() {
250 var isDebug = lists.ContainsString(os.Args, "debug")
251 for {
252 conn, err := this.sock.Dial()
253 if err != nil {
254 if isDebug {
255 log.Println("[DAEMON]starting ...")
256 }
257
258 // 尝试启动
259 err = func() error {
260 exe, err := os.Executable()
261 if err != nil {
262 return err
263 }
264
265 // 可以标记当前是从守护进程启动的
266 _ = os.Setenv("EdgeDaemon", "on")
267 _ = os.Setenv("EdgeBackground", "on")
268
269 var cmd = exec.Command(exe)
270 var buf = &bytes.Buffer{}
271 cmd.Stderr = buf
272 err = cmd.Start()
273 if err != nil {
274 return err
275 }
276 err = cmd.Wait()
277 if err != nil {
278 if isDebug {
279 log.Println("[DAEMON]" + buf.String())
280 }
281 return err
282 }
283 return nil
284 }()
285
286 if err != nil {
287 if isDebug {
288 log.Println("[DAEMON]", err)
289 }
290 time.Sleep(1 * time.Second)
291 } else {
292 time.Sleep(5 * time.Second)
293 }
294 } else {
295 _ = conn.Close()
296 time.Sleep(5 * time.Second)
297 }
298 }
299}
300
301// InstallSystemService 安装系统服务
302func (this *Node) InstallSystemService() error {

Callers 1

mainFunction · 0.80

Calls 4

StartMethod · 0.65
CloseMethod · 0.65
WaitMethod · 0.45
StringMethod · 0.45

Tested by

no test coverage detected