
windows 下 通过任务管理器,选择"结束任务",关闭程序。golang 有没有什么办法监听到关闭事件。os.Signal 对由任务管理器关闭无效。
1 chenset 2019-05-03 22:17:57 +08:00 window 任务管理器这个以前查过, golang 层好像的确监听不到. |
2 chenset 2019-05-03 22:20:00 +08:00 但是 windows 下的 IDE 的 run & stop 是支持的 os.Signal 的 |
3 chenset 2019-05-03 22:21:34 +08:00 所以要实现监听可以试试用命令行的 taskkill |
4 ysc3839 2019-05-03 22:39:49 +08:00 via Android Windows 没有 Unix 的 signal 机制,所以实现不了的。 |
5 geelaw 2019-05-03 23:16:44 +08:00 via iPhone CLI: 用 SetConsoleCtrlHandler 处理 CTRL_CLOSE_EVENT GUI: 在 WdProc 里处理 WM_CLOSE |
6 lusi1990 2019-05-03 23:56:51 +08:00 via Android go,not golang |
7 .Net 可以用 WaitForExit 达到监听的目的 前提是进程是你的进程打开的 |
8 KasuganoSoras 2019-05-04 00:58:00 +08:00 程序启动时顺带启动一个 cmd 脚本,脚本里面循环检测进程是否存在,如果不存在就执行 xxx |
9 DefoliationM 2019-05-04 01:14:39 +08:00 via Android tasklist 抓一下 |
10 zwh2698 2019-05-04 01:41:50 +08:00 via Android 看了楼上回答的,没有一个满意的。监听进程如果你创建的,你可以 wait ,不是你创建的,你要打开进程句柄 wait, 是不是很烦。 所以进程管理的 queryprocessinfo 这个 API,你也可以用,这样就解决了。 |
11 xuanbg 2019-05-04 08:24:31 +08:00 任何程序都可以通过系统 API 监听进程运行状态,但都不能监听到自身的异常退出。因为在此之前,你就异常退出了呀。所以,自己另外起一个守护进程监听就好了嘛。 |
12 Qzier 2019-05-04 09:13:17 +08:00 via iPhone python 可以监听,go 不清楚。 |
13 jicg OP 主进程用 golang 写的。调用 winform 开发的 gui 程序。在任务管理器里面关闭 golang 程序的话,winform 程序还是在跑着。如果关闭 winform 程序,golang 能监听到,程序能正常退出 |
14 kaneg 2019-05-04 12:49:25 +08:00 via iPhone 通过这种方式关闭进程和在 Linux 下用 kill -9 一样,根本不给进程任何机会就杀死了,所以不可能做出响应。 |
15 usingnamespace 2019-05-05 00:46:24 +08:00 via iPhone @kaneg 确实,kill 和 stop 无法捕捉。。内核源码改起来哈哈哈 重新编译内核 然后全盘崩掉(逃) |