В настоящее время я пишу приложение FUSE, которое должно реализовать права доступа на основе процесса. Я теперь спотыкаюсь о том, что FUSE предоставляет только ThreadID, а не ProcessID. Теперь мне нужно найти PID (или идентификатор группы потоков) для данного ИД потока другого процесса.
Я заметил, что proc fs предоставляет информацию на основе Thread (даже ls/proc не показывает ни одного идентификатора PID, к которому все еще можно получить доступ через /proc/<TID>/) таким образом, я могу спросить /proc/<TID>/status о Tgid, но поскольку мое приложение FUSE будет обслуживать сотни запросов в секунду, я считаю, что это может быть не лучшим образом здесь.
Кто-нибудь знает syscall или функцию формы gettgid (tid), которая будет использоваться здесь?
Я думаю, вам нужно использовать /proc/, чтобы получить эту информацию самостоятельно. Я не могу найти никаких функций syscall или posix, которые делают то, что вам нужно./proc/должен быть быстрым, поскольку он не является реальным fs на диске, и я думаю, что это единственный выбор.
proc
. В частности, идентификаторы потоков находятся в/proc/<parent_pid>/task/*
getpgid
; Однако возвращаемое значение не всегда может быть одинаковым.