没有太多要添加这个问题。我想在我的进程中添加一个功能来识别“坏句柄”并删除它们。
更新:我知道“坏处理”可能听起来像一个模糊的术语。基本上任何会阻止我通过 IPC 与进程通信的东西。
我仍然不确定您所说的“坏句柄”是什么意思。如果您可以发布一个示例来说明您的意思,那将有很大帮助。
在任何时候,您都可以检查一个句柄或一个句柄列表key[.z.W]
,它返回一个被 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
功能,您可以将自己的逻辑添加到该功能中。