golang 消息忽略 signal.Ignore(syscall.SIGHUP) 示例

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

目录

示例1: exec.Command 子进程调用 忽略消息 防止僵尸进程

示例2:管道调用中的 消息忽略

示例3:多个消息忽略

示例4:消息忽略 与 消息处理 同存


消息具体含义参考:

《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)
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值