Я все еще не уверен, что вы подразумеваете под "плохой ручкой". Если бы вы могли опубликовать пример того, что вы имеете в виду, это очень помогло бы.
В любой момент вы можете проверить дескриптор или список дескрипторов по отношению к key[.z.W]
, который возвращает список дескрипторов, которые считаются действительными по q
Вы можете реализовать асинхронный пинг-тест, который будет проверять, занят ли процесс в данный момент.
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
, вы можете добавить свою собственную логику в эту функцию.