我正在使用此功能进入“守护进程”模式:func daemon(nochdir, noclose int) int { ret, _, err := syscall.Syscall(syscall.SYS_FORK, 0, 0, 0) if err != 0 { maybe_exit_err("Forking", err) return -1 } switch ret { case 0: break default: os.Exit(0) } sid, err2 := syscall.Setsid() maybe_exit_err(fmt.Sprintf("could not set session: %s", sid), err2) if sid == -1 { return -1 } if nochdir == 0 { os.Chdir("/") } if noclose == 0 { f, e := os.OpenFile("/dev/null", os.O_RDWR, 0) if e == nil { fd := int(f.Fd()) syscall.Dup2(fd, int(os.Stdin.Fd())) syscall.Dup2(fd, int(os.Stdout.Fd())) syscall.Dup2(fd, int(os.Stderr.Fd())) } } return 0}只要我不使用time.Sleep(1 * time.Second). 在那之后,它只是坐在那里什么也不做,我什至在循环中将写入测试字符串添加到我自己打开的文件中,并且在time.Sleep使用后没有写入任何内容(如果没有,它也可以正常工作)。这里的原因可能是什么?
1 回答
- 1 回答
- 0 关注
- 205 浏览
添加回答
举报
0/150
提交
取消