Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Linux. Где находиться данные в файле, является ли он исполняемый или нет?

Серый Стрелок Мастер (1233), на голосовании 11 лет назад
Здравствуйте, на сколько я понял в Linux, в каждом файле есть выделенная память на 16 бит, где первые 4 бита - кодируется запись о типе файла, 3 бита - какие-то свойства исполняемости файла, и последние 9 бит - права доступа. Делятся по три группы, с битами отвечающими за чтение, запись, или исполнение, т. е. rwx rwx r-x.
Мне нужно в своей программе узнать является ли он исполняемый или нет. Как я понимаю есть два способа:
1) Системный вызов stat, и прочитать в структуре права доступа.
2) Самому найти эти 16 бит, но где они будут находиться в файле? И можно ли их будет прочитать системными вызовами open и lseek?
Голосование за лучший ответ
[ARHANGEL] Гуру (3207) 11 лет назад
Ну а чем вас не устраивает stat?
Капитан Гугл Искусственный Интеллект (146215) 11 лет назад
Они не в файле - они в описании файла в файловой таблице.
Так что или кури маны по своей файловой системе - или stat.
Серый СтрелокМастер (1233) 11 лет назад
Спасибо
-=| X1nT |=- Мудрец (18439) 11 лет назад
не знаю подойдет ли, но тупой вариант в лоб

ls -ld file_name | cut -c 4,7,10

выдаст только биты исполнения

а вообще вопрос не совсем корректен узнать исполняемый ли это файл можно с помощью
file file_name
строчка "executable" подскажет

а то что ты проверяешь просто права на исполнение файла
Серый СтрелокМастер (1233) 11 лет назад
Спасибо вам, я не знал что есть различия между исполняемым файлом и правами на исполнение.
Я просто разбираюсь с темой, мне надо в ассемблерной программе сделать проверку на то, является ли исполняемый файл или нет. Может быть вы знаете как в этом случае надо сделать, может есть какой-нибудь подходящий системный вызов?

Похожие вопросы