Если я понимаю Вас правильно и если это находится на Linux, можно попытаться использовать
/proc/self/fd/0
как аргумент. Это должно быть символьной ссылкой на стандартный вход процесса. Эквивалентно, в некоторых системах, Вы могли использовать
/dev/stdin
который является часто просто символьной ссылкой на /proc/self/fd/0
. У меня нет системы с системным-журналом-ng для тестирования этого на, но я думаю, что что-то как следующее должно работать:
destination knotifier { program('/path/to/executable -i /proc/self/fd/0'); };
где-i заменили бы любой переключатель командной строки исполняемые потребности если таковые имеются. Я также видел используемый/dev/fd/0, но я склонен придерживаться использования/proc непосредственно. Поскольку больше информации видит man proc
.
Жесткие ссылки могут быть определены путем сравнения и inode числа и номера устройства (две различных смонтированных файловых системы могут каждый иметь файл с тем же inode числом, но у них будут различные номера устройств). Можно считать device/inode вручную с stat $file
, или find
может сделать это для Вас с -samefile
. Можно сделать поиск жестких ссылок более эффективным путем поиска только в том же устройстве:
find $fsroot/. -mount -samefile $myfile
Гибкие ссылки более тверды, поскольку они могут быть расположены где угодно. Необходимо разыменовать их для идентификации inode/device. Можно сделать это вручную с stat -L
или автоматически с find -L
:
find -L / -samefile $myfile
Обратите внимание, что это также найдет жесткие ссылки. Я не думаю find
имеет простой способ искать только гибкие ссылки, которые указывают на определенный inode.
Могло бы случиться так, что некоторые файловые системы могут сказать Вам эту информацию более эффективно, но я думаю в общем случае, необходимо просканировать каждый файл.