栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Golang捕获信号

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Golang捕获信号

Go中有三种执行程序的方式:

  1. syscall
    包含syscall.Exec,syscall.ForkExec,syscall.StartProcess的软件包
  2. os
    与os.StartProcess一起打包
  3. os/exec
    与exec.Command一起打包

syscall.StartProcess是低级别。它返回a

uintptr
作为句柄。

os.StartProcess
给您一个不错的
os.Process
结构,您可以调用Signal。
os/exec
让您
io.ReaderWriter
可以在管道上使用。两者都在
syscall
内部使用。

读取 您自己的进程以外的进程发送的信号似乎有些棘手。如果有可能,

syscall
将能够做到。在更高级别的程序包中,我看不到任何明显的东西。

要接收信号,您可以使用signal.Notify像这样通知:

sigc := make(chan os.Signal, 1)signal.Notify(sigc,    syscall.SIGHUP,    syscall.SIGINT,    syscall.SIGTERM,    syscall.SIGQUIT)go func() {    s := <-sigc    // ... do something ...}()

您只需要更改您想听的信号即可。如果不指定信号,它将捕获所有可以捕获的信号。

您将使用syscall.Kill或Process.Signal映射信号。您可以

Process.Pid
从syscall.StartProcess或从中获取pid



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/484265.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号