LINUX.ORG.RU

Странно-интересное


0

0

Проходя практику в институте появилась острая необходимость в одном очень странном на первый взгляд решение задачи. Суть: необходимо по файловому дескриптору определить полный путь до файла. Если есть у кого-нибудь какие-нибудь соображения просьба ответить. Заранее спасибо.

П.С. задача радилась не от того что я потерял где-то в исходном коде строчку с путем до файла, а в другом: пользователь пререопределил stdout до файла, и нужно узнать в какой файл перенаправляется путь.

в общем случае поможет lsof

В линухе можно в /proc/<pid>/fd поковыряться

true_admin ★★★★★
()

> Суть: необходимо по файловому дескриптору определить полный путь до файла.

Который? Путей до файла может быть от нуля до бесконечности (оба конца включительно).

Miguel ★★★★★
()

Вдоль. Совершенно не обязательно это вообще будет файл.

anonymous
()

> пользователь пререопределил stdout до файла, и нужно узнать в какой файл перенаправляется путь.

ls -l /proc/`pidof progname`/fd/1 -- это stdout (1), 2 -- это stderr ( 0 -- stdin). Если показывает ссылку на другой файл, это он и есть. Это если перенаправление в самой программе через dup(3). Если через шелл, надо смотреть например в списке процессов из ps aux.

anonymous
()
Ответ на: комментарий от anonymous

По дискриптеру можно найти номер иноды. По иноде уже найти имя файла.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.