从进程中识别和删除坏句柄的最佳方法是什么?
What's the best way of identifying and removing bad handles from a process?
这个问题就不多说了。我想在我的流程中添加一个功能来识别 "bad handles" 并删除它们。
更新:我知道 "bad handle" 听起来像是一个模糊的术语。基本上任何会阻止我通过 IPC 与进程通信的东西。
我仍然不确定 "bad handle" 是什么意思。如果你能 post 举例说明你的意思,那将大有帮助。
您可以随时根据 key[.z.W]
检查句柄或句柄列表,其中 returns q
认为有效的句柄列表
您可以实施异步 ping 测试,这将测试进程当前是否繁忙。
q)\q -p 5567
q)\q -p 5568
q)h:hopen each 5566+til 3
q)h
3 4 5i
q){valid::x!count[x]#0b;neg[x]@\:({neg[.z.w]"valid[.z.w]:1b"};`);} h
q)valid
3| 1
4| 1
5| 1
q)neg[h 1]("system";"sleep 10")
q){valid::x!count[x]#0b;neg[x]@\:({neg[.z.w]"valid[.z.w]:1b"};`);} h
q)valid
3| 1
4| 0
5| 1
此外,任何远程删除的句柄都会触发 .z.pc
函数,您可以将自己的逻辑添加到此函数中。
这个问题就不多说了。我想在我的流程中添加一个功能来识别 "bad handles" 并删除它们。
更新:我知道 "bad handle" 听起来像是一个模糊的术语。基本上任何会阻止我通过 IPC 与进程通信的东西。
我仍然不确定 "bad handle" 是什么意思。如果你能 post 举例说明你的意思,那将大有帮助。
您可以随时根据 key[.z.W]
检查句柄或句柄列表,其中 returns q
您可以实施异步 ping 测试,这将测试进程当前是否繁忙。
q)\q -p 5567
q)\q -p 5568
q)h:hopen each 5566+til 3
q)h
3 4 5i
q){valid::x!count[x]#0b;neg[x]@\:({neg[.z.w]"valid[.z.w]:1b"};`);} h
q)valid
3| 1
4| 1
5| 1
q)neg[h 1]("system";"sleep 10")
q){valid::x!count[x]#0b;neg[x]@\:({neg[.z.w]"valid[.z.w]:1b"};`);} h
q)valid
3| 1
4| 0
5| 1
此外,任何远程删除的句柄都会触发 .z.pc
函数,您可以将自己的逻辑添加到此函数中。