目录
示例1: exec.Command 子进程调用 忽略消息 防止僵尸进程
消息具体含义参考:
《golang signal 信号处理》 https://blog.csdn.net/whatday/article/details/118650161
示例1: exec.Command 子进程调用 忽略消息 防止僵尸进程
func main() {
flag.Usage = usage
flag.Parse()
if flag.NArg() < 1 {
usage()
}
if isatty(1) {
dofile()
}
if isatty(2) {
os.Stderr = os.Stdout
}
signal.Ignore(syscall.SIGHUP)
args := flag.Args()
cmd := exec.Command(args[0], args[1:]...)
cmd.Stdin = os.Stdin
cmd.Stderr = os.Stderr
cmd.Stdout = os.Stdout
err := cmd.Run()
if err != nil {
fmt.Fprintln(os.Stderr, err)
if _, ok := err.(*exec.ExitError); ok {
os.Exit(126)
}
os.Exit(127)
}
}

本文介绍了在Golang中如何使用`signal.Ignore`函数忽略特定信号,如SIGHUP,以防止僵尸进程,并展示了在子进程调用、管道通信及多信号处理中的应用。示例代码详细解释了如何在不同场景下处理和忽略信号,确保程序的稳定运行。

754

被折叠的 条评论
为什么被折叠?



