Форум программистов, компьютерный форум, киберфорум
С под Linux
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 18.02.2014
Сообщений: 208
1

Получить имя файла по файловому дескриптору

02.05.2019, 09:55. Показов 1198. Ответов 14

Здравствуйте пишу программу перехват системных вызовов в ядре open,read,write,close.
Вопрос вот в чем. Допустим системный вызов read имеет первый параметр дескриптор файла.
Как нибудь в ядре линукса можно получить полное имя файла по дескриптору файла?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.05.2019, 09:55
Ответы с готовыми решениями:

Можно ли узнать имя файла по int дескриптору?
Открываю файл так: errno_t err01; int fHandle; err01 = _sopen_s(&fHandle, fileName, _O_RDWR,...

Из строки, содержащей полное имя файла, получить имя файла
Помогите Дана строка, содержащая полное имя файла, то есть имя диска, список каталогов (путь),...

Получить Полный путь к файлу по Дескриптору
Нашел вот этот пример, а как использовать не знаю. Подскажите Пожалуйста. static extern void...

Получить путь к .exe по дескриптору окна
wchar_t szFileName; DWORD pID; HANDLE hProcess; HWND hWnd = FindWindow(NULL,...

14
140 / 121 / 40
Регистрация: 18.10.2017
Сообщений: 1,116
02.05.2019, 11:13 2
В ядре не знаю, не нашёл, в смысле не нашёл системного вызова и структуры, но можно считать из /proc.
Именно, пусть есть процесс с именем name и id, id можно получить из вывода "ps -A | grep name".
Есть дескриптор открытого файла, например, 3. Тогда /proc/<id>/fd/3 будет ссылкой на имя файла.
0
77 / 56 / 26
Регистрация: 15.05.2013
Сообщений: 176
02.05.2019, 12:33 3
Если есть возможность вызова fcntl, то можно получить путь так

char buf[SIZE]
fcntl(fd, F_GETPATH, buf)
0
140 / 121 / 40
Регистрация: 18.10.2017
Сообщений: 1,116
02.05.2019, 15:37 4
shadowmaan, Я это пробовал, прежде чем ответить, у меня не компилируется, пишет, что нет F_GETPATH.
0
77 / 56 / 26
Регистрация: 15.05.2013
Сообщений: 176
02.05.2019, 16:25 5
peter_irich, посмотрел, да, есть в bsd, но нет в linux.
0
458 / 322 / 104
Регистрация: 02.10.2008
Сообщений: 1,272
Записей в блоге: 1
02.05.2019, 21:09 6
Цитата Сообщение от kold2015 Посмотреть сообщение
перехват системных вызовов в ядре open,read,write,close.
Цитата Сообщение от kold2015 Посмотреть сообщение
Как нибудь в ядре линукса можно получить полное имя файла по дескриптору файла?
Самому разобрать текущую файловую систему. Разобраться с #include <linux\fs.h> - это общий файл - придётся полазить в других.
0
Evg
Эксперт CАвтор FAQ
21204 / 8220 / 633
Регистрация: 30.03.2009
Сообщений: 22,542
Записей в блоге: 30
02.05.2019, 21:20 7
Цитата Сообщение от peter_irich Посмотреть сообщение
Тогда /proc/<id>/fd/3
Вместо /proc/<id> можно использовать /proc/self
0
140 / 121 / 40
Регистрация: 18.10.2017
Сообщений: 1,116
02.05.2019, 22:52 8
Evg, да, должно быть можно, но я тогда как-то не нашёл.
0
458 / 322 / 104
Регистрация: 02.10.2008
Сообщений: 1,272
Записей в блоге: 1
03.05.2019, 08:24 9
Цитата Сообщение от Evg Посмотреть сообщение
Вместо /proc/<id> можно использовать /proc/self
Я конечно в драйверах лох, но как из кернел-моды прочитать файл?
0
Evg
Эксперт CАвтор FAQ
21204 / 8220 / 633
Регистрация: 30.03.2009
Сообщений: 22,542
Записей в блоге: 30
03.05.2019, 14:59 10
Цитата Сообщение от drfaust Посмотреть сообщение
Я конечно в драйверах лох, но как из кернел-моды прочитать файл?
ТС (который давно сгинул) пишет "программу перехват системных вызовов в ядре". Вряд ли речь идёт о режиме ядра. Скорее какой-нибудь аналог strace
0
1 / 1 / 0
Регистрация: 18.02.2014
Сообщений: 208
03.05.2019, 16:14  [ТС] 11
Ребят я понял. Я не сгинул. Речь идет о коде в пространстве ядра
0
458 / 322 / 104
Регистрация: 02.10.2008
Сообщений: 1,272
Записей в блоге: 1
03.05.2019, 16:38 12
Т.е. модуль ядра. - тогда ковыряться в ветке linux\*.h - откуда начать я указал.
0
1 / 1 / 0
Регистрация: 18.02.2014
Сообщений: 208
03.05.2019, 16:50  [ТС] 13
я уже решил данную задачу
0
458 / 322 / 104
Регистрация: 02.10.2008
Сообщений: 1,272
Записей в блоге: 1
03.05.2019, 17:14 14
Ну так дай решение (если этл возможно по коммерческим/политическим соображениям) - нам тоже интересно. Может и улучшить смогЁм
0
1 / 1 / 0
Регистрация: 18.02.2014
Сообщений: 208
03.05.2019, 17:23  [ТС] 15
Дам попозже
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.05.2019, 17:23

Дано полное имя файла, т.е путь к файлу, имя и расширение. Выделить с этого рядка имя файла без расширения/
C++

Дано полное имя файла, т.е путь к файлу, имя и расширение. Выделить с этого рядка имя файла без расширения
На с++

По известному дескриптору окна получить Id процесса, к которому оно принадлежит
Можно ли как-то по известному дескриптору окна получить Id процесса, к которому оно принадлежит?...

Как по дескриптору процесса получить hWnd порождённого этим процессом окна?
Как по дескриптору процесса получить hWnd порождённого этим процессом окна? Цель: запустить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.