Каков наилучший способ выявления и удаления плохих дескрипторов из процесса? - PullRequest
0 голосов
/ 14 марта 2019

Не так много, чтобы добавить этот вопрос. Я хочу добавить в свой процесс функциональность, которая определяет «плохие ручки» и удаляет их.

ОБНОВЛЕНИЕ: я знаю, что "плохая ручка" может звучать как туманный термин. В основном все, что мешало бы мне общаться с процессом через IPC.

1 Ответ

1 голос
/ 14 марта 2019

Я все еще не уверен, что вы подразумеваете под "плохой ручкой". Если бы вы могли опубликовать пример того, что вы имеете в виду, это очень помогло бы.

В любой момент вы можете проверить дескриптор или список дескрипторов по отношению к 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, вы можете добавить свою собственную логику в эту функцию.

...