首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
beego
Coding
V2EX  ›  Go

golang 没有办法监听到 程序退出事件啊(通过任务管理器,选择"结束任务",关闭)

  •  
  •   jicg · 226 天前 · 2434 次点击
    这是一个创建于 226 天前的主题,其中的信息可能已经有所发展或是发生改变。

    windows 下 通过任务管理器,选择"结束任务",关闭程序。golang 有没有什么办法监听到关闭事件。os.Signal 对由任务管理器关闭无效。

    15 回复  |  直到 2019-05-05 00:46:24 +08:00
        1
    chenset   226 天前
    window 任务管理器这个以前查过, golang 层好像的确监听不到.
        2
    chenset   226 天前
    但是 windows 下的 IDE 的 run & stop 是支持的 os.Signal 的
        3
    chenset   226 天前
    所以要实现监听可以试试用命令行的 taskkill
        4
    ysc3839   226 天前 via Android
    Windows 没有 Unix 的 signal 机制,所以实现不了的。
        5
    geelaw   226 天前 via iPhone
    CLI: 用 SetConsoleCtrlHandler 处理 CTRL_CLOSE_EVENT
    GUI: 在 WdProc 里处理 WM_CLOSE
        6
    lusi1990   226 天前 via Android
    go,not golang
        7
    404neko   226 天前
    .Net 可以用 WaitForExit 达到监听的目的 前提是进程是你的进程打开的
        8
    KasuganoSoras   226 天前
    程序启动时顺带启动一个 cmd 脚本,脚本里面循环检测进程是否存在,如果不存在就执行 xxx
        9
    DefoliationM   226 天前 via Android
    tasklist 抓一下
        10
    zwh2698   226 天前 via Android
    看了楼上回答的,没有一个满意的。监听进程如果你创建的,你可以 wait ,不是你创建的,你要打开进程句柄 wait, 是不是很烦。 所以进程管理的 queryprocessinfo 这个 API,你也可以用,这样就解决了。
        11
    xuanbg   226 天前
    任何程序都可以通过系统 API 监听进程运行状态,但都不能监听到自身的异常退出。因为在此之前,你就异常退出了呀。所以,自己另外起一个守护进程监听就好了嘛。
        12
    Qzier   226 天前 via iPhone
    python 可以监听,go 不清楚。
        13
    jicg   226 天前
    主进程用 golang 写的。调用 winform 开发的 gui 程序。在任务管理器里面关闭 golang 程序的话,winform 程序还是在跑着。如果关闭 winform 程序,golang 能监听到,程序能正常退出
        14
    kaneg   225 天前 via iPhone
    通过这种方式关闭进程和在 Linux 下用 kill -9 一样,根本不给进程任何机会就杀死了,所以不可能做出响应。
        15
    usingnamespace   225 天前 via iPhone
    @kaneg 确实,kill 和 stop 无法捕捉。。内核源码改起来哈哈哈 重新编译内核 然后全盘崩掉(逃)
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4372 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 25ms · UTC 02:53 · PVG 10:53 · LAX 18:53 · JFK 21:53
    ♥ Do have faith in what you're doing.