2014-10-25 5 views
-1

Я хочу получить имена исполняемых файлов в некоторых каталогах в Linux. Как я могу это сделать?Как найти исполняемые файлы в Linux?

Я пытался использовать opendir так:

реж = opendir (DirectoryName);

Мне нужно получить только имена исполняемых файлов. я программирование на C.

спасибо :)

+1

Существуют тысячи примеров использования ['opendir'] (http://man7.org/linux/man-pages/man3/opendir.3.html) и связанных функций, если вы просто немного ищете. –

+0

Я много искал и ничего не нашел. Вы можете мне помочь? – user3593549

+2

Одним из первых хитов в моих любимых поисковых системах был [этот старый вопрос SO] (http://stackoverflow.com/questions/3554120/open-directory-using-c). Прочтите этот пример, прочитайте [страницы руководства] (http://man7.org/linux/man-pages/) и попытайтесь сделать что-то самостоятельно. *** Если у вас есть проблемы с *** вашей собственной программой ***, вернитесь сюда и задайте новый вопрос, который показывает вашу полную попытку и подробное описание ваших проблем с этим кодом. –

ответ

0

Вы должны определить, что вы имеете в виду исполняемых файлов.

Это может быть любой файл с его исполняемым битом (это владелец, группа или другое). Затем проверьте с access(2) & X_OK и/или используйте stat(2).

Это также может быть только ELF исполняемых файлов. См. elf(5); то проблема может заключаться в проверке того, что файл действительно может быть выполнен, что может быть затруднено (что касается недостатков в библиотеке или неправильно сформированных файлов ELF?). Возможно, используйте libelf (и/или libmagic, чтобы выполнить эквивалент команды file(1)).

Чтобы сканировать рекурсивно дерево файлов, используйте nftw(3); сканировать только каталог использовать opendir(3) & readdir(3) (не забудьте closedir!), то вам, вероятно, нужно построить полный путь к файлу из каждой записи каталога (возможно, с помощью snprintf(3) или asprintf(3))

Смотрите также Advanced Linux Programming

Смежные вопросы