Linux c / c ++ Как найти PID из ThreadID

0

В настоящее время я пишу приложение FUSE, которое должно реализовать права доступа на основе процесса. Я теперь спотыкаюсь о том, что FUSE предоставляет только ThreadID, а не ProcessID. Теперь мне нужно найти PID (или идентификатор группы потоков) для данного ИД потока другого процесса.

Я заметил, что proc fs предоставляет информацию на основе Thread (даже ls/proc не показывает ни одного идентификатора PID, к которому все еще можно получить доступ через /proc/<TID>/) таким образом, я могу спросить /proc/<TID>/status о Tgid, но поскольку мое приложение FUSE будет обслуживать сотни запросов в секунду, я считаю, что это может быть не лучшим образом здесь.

Кто-нибудь знает syscall или функцию формы gettgid (tid), которая будет использоваться здесь?

Теги:
process
system-calls

1 ответ

1
Лучший ответ

Я думаю, вам нужно использовать /proc/, чтобы получить эту информацию самостоятельно. Я не могу найти никаких функций syscall или posix, которые делают то, что вам нужно./proc/должен быть быстрым, поскольку он не является реальным fs на диске, и я думаю, что это единственный выбор.

  • 0
    На самом деле. Linux содержит очень мало системных вызовов или API для доступа к системной информации, кроме proc . В частности, идентификаторы потоков находятся в /proc/<parent_pid>/task/*
  • 0
    Кроме того, обратите внимание, что именно в Linux, где идентификаторы потоков - это, в основном, идентификаторы процессов, мне немного повезло (с некоторым примером кода) с использованием getpgid ; Однако возвращаемое значение не всегда может быть одинаковым.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню