Как я могу проверить в Lua, является ли строка путем к исполняемому файлу? Кажется, что ни стандартная библиотека, ни, что удивительно, LuaFileSystem не предоставляют возможности сделать это.
Как проверить, является ли файл исполняемым в Lua?
Ответы (2)
В LuaFileSystem есть функция lfs.attributes(), которая возвращает таблицу. Это, как ни странно, имеет ключ с именем «режим», который содержит строку, описывающую «тип» узла (файл, каталог, сокет и т. д.).
Хотя он не указан в руководстве по адресу: http://keplerproject.github.io/luafilesystem/manual.html ... который, кажется, является канонической ссылкой для этого модуля ... в этой таблице также есть ключ «разрешения». Я думаю, вы могли бы проанализировать его для любых символов «x».
Я обнаружил это с помощью:
#!lua
local lfs = require 'lfs'
attr = lfs.attributes('./some_file')
for name, value in pairs(attr) do
print (name,value)
end
luaposix имеет статистика. Он возвращает число для поля mode
, которое включает биты разрешения на выполнение (в отличие от LuaFileSystem, который дает вам только тип файла).
Существует также доступ, который будет проверять разрешения только для текущего пользователя.
loadfile()
и проверьте, возвращает ли он ошибку? - person hjpotter92   schedule 09.05.2013loadfile
предназначен для загрузки кода Lua, а не для проверки того, является ли файл двоичным исполняемым, @hjpotter92. - person Omar Antolín-Camarena   schedule 09.05.2013