Как узнать точное местоположение доступа к файлу в Android NDK

С помощью «lsof» я могу проверить список открытых файлов, есть ли какая-либо команда или любой другой способ, с помощью которого я могу определить, где файлы, к которым осуществляется доступ. Вывод команды «lsof» выглядит следующим образом:

COMMAND     PID       USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME

init          1        ???  cwd       ???                ???       ???        ??? /proc/1/cwd (readlink: Permission denied)

init          1        ???  exe       ???                ???       ???        ??? /proc/1/exe (readlink: Permission denied)

init          1        ??? root       ???                ???       ???        ??? /proc/1/root (readlink: Permission denied)

init          1        ???  FDS                                                   /proc/1/fd/ (opendir: Permission denied)

init          2        ???  cwd       ???                ???       ???        ??? /proc/2/cwd (readlink: Permission denied)

init          2        ???  exe       ???                ???       ???        ??? /proc/2/exe (readlink: Permission denied)

init          2        ??? root       ???                ???       ???        ??? /proc/2/root (readlink: Permission denied)

init          2        ???  FDS                                                   /proc/2/fd/ (opendir: Permission denied)

init          3        ???  cwd       ???                ???       ???        ??? /proc/3/cwd (readlink: Permission denied)

init          3        ???  exe       ???                ???       ???        ??? /proc/3/exe (readlink: Permission denied)

init          3        ??? root       ???                ???       ???        ??? /proc/3/root (readlink: Permission denied)

init          3        ???  FDS                                                   /proc/3/fd/ (opendir: Permission denied)

init          4        ???  cwd       ???                ???       ???        ??? /proc/4/cwd (readlink: Permission denied)

init          4        ???  exe       ???                ???       ???        ??? /proc/4/exe (readlink: Permission denied)

init          4        ??? root       ???                ???       ???        ??? /proc/4/root (readlink: Permission denied)

init          4        ???  FDS                                                   /proc/4/fd/ (opendir: Permission denied)

init          5        ???  cwd       ???                ???       ???        ??? /proc/5/cwd (readlink: Permission denied)

init          5        ???  exe       ???                ???       ???        ??? /proc/5/exe (readlink: Permission denied)

init          5        ??? root       ???                ???       ???        ??? /proc/5/root (readlink: Permission denied)

init          5        ???  FDS                                                   /proc/5/fd/ (opendir: Permission denied)

init          6        ???  cwd       ???                ???       ???        ??? /proc/6/cwd (readlink: Permission denied)

init          6        ???  exe       ???                ???       ???        ??? /proc/6/exe (readlink: Permission denied)

init          6        ??? root       ???                ???       ???        ??? /proc/6/root (readlink: Permission denied)

init          6        ???  FDS                                                   /proc/6/fd/ (opendir: Permission denied)

init          7        ???  cwd       ???                ???       ???        ??? /proc/7/cwd (readlink: Permission denied)

init          7        ???  exe       ???                ???       ???        ??? /proc/7/exe (readlink: Permission denied)

init          7        ??? root       ???                ???       ???        ??? /proc/7/root (readlink: Permission denied)

init          7        ???  FDS                                                   /proc/7/fd/ (opendir: Permission denied)

init          8        ???  cwd       ???                ???       ???        ??? /proc/8/cwd (readlink: Permission denied)

init          8        ???  exe       ???                ???       ???        ??? /proc/8/exe (readlink: Permission denied)

init          8        ??? root       ???                ???       ???        ??? /proc/8/root (readlink: Permission denied)

init          8        ???  FDS                                                   /proc/8/fd/ (opendir: Permission denied)

init          9        ???  cwd       ???                ???       ???        ??? /proc/9/cwd (readlink: Permission denied)

init          9        ???  exe       ???                ???       ???        ??? /proc/9/exe (readlink: Permission denied)

init          9        ??? root       ???                ???       ???        ??? /proc/9/root (readlink: Permission denied)

init          9        ???  FDS                                                   /proc/9/fd/ (opendir: Permission denied)

init         10        ???  cwd       ???                ???       ???        ??? /proc/10/cwd (readlink: Permission denied)

Для каждого pid я получаю три местоположения, например, для pid "9", я получаю следующие местоположения: - "/proc/1/cwd (ссылка для чтения: Отказано в доступе)","/proc/9/exe","/proc/ 9/fd/ (opendir: Отказано в доступе)"

Теперь, как я могу узнать, какой именно файл используется? Я новичок, поэтому недостаточно знаю. Любое предложение будет большим подспорьем с вашей стороны.


person chiv    schedule 10.09.2012    source источник


Ответы (1)


Попробуйте фьюзер. http://linux.die.net/man/1/fuser Используется для идентифицировать процессы с помощью файлов или сокетов.

person spitfire88    schedule 10.09.2012
comment
сэр, когда я запустил fsuer, он говорит, что не найден - person chiv; 10.09.2012
comment
я думаю, что для фьюзера требуется root-права, у меня нет root-прав - person chiv; 10.09.2012
comment
пожалуйста, убедитесь, что вы запустили fuser, а не fsuer, как вы упомянули в первом комментарии. Если он говорит, что не найден, вам придется установить его. Если бы для этого требовалось разрешение root, было бы явно указано, что требуется разрешение root, вместо того, чтобы сказать, что он не найден. над каким дистрибутивом работаешь? - person spitfire88; 10.09.2012
comment
Знаете ли вы, как установить термоблок в Android NDK? Есть ли другой способ, кроме фьюзера... я искал, но не нашел ссылки для установки фьюзера - person chiv; 10.09.2012
comment
если есть способ использовать lsof в среде android ndk, есть большая вероятность, что fuser также можно использовать аналогичным образом. Эксперт android-ndk может помочь. - person spitfire88; 10.09.2012
comment
lsof можно использовать непосредственно из оболочки, но когда я запускаю fuser, я не нахожусь - person chiv; 10.09.2012