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