Логин        Пароль                  

Забыли пароль?        Регистрация               
 
Инвентори
Другие игры
SmartSection is developed by The SmartFactory (http://www.smartfactory.ca), a division of INBOX Solutions (http://inboxinternational.com)
Учебник > Для админов и билдеров > Загрузка библиотек Lua при старте
Загрузка библиотек Lua при старте
Опубликовал(а) Flanker 06.06.2013 (6169 прочтений)

При запуске Луа в маде есть некоторые особенности о которых хотелось бы написать отдельно. Проблема в том, что стандартный старт Луа и библиотек выглядит примерно так:

 

 

lua_State *vLm;

vLm = lua_open();

luaL_openlibs(vLm);

 

 

При При таком запуске Lua у нас запускается сам Луа,дальше подгружаются все стандартные библиотеки. Не знаю как вас, а меня это не очень устраивает по причине того, что в этом случае любой сторонний пользователь кого мы будем допускать к работе с нашим Луа будет иметь полный доступ к файловой системе сервера и ряду функций операционной системы, что имхо не очень хорошо. Что же делать?



Совсем не подключать стандартные бибилиотеки плохо нам наверняка понадобится и математическая библиотека и библиотека для работы со строками ну и конечно библиотека таблиц. Погуглив интернет я нашел следующее решение проблемы:

 //Сам Lua мы открываем как обычно

 

lua_State *vLm;

vLm = lua_open();

//А вот дальше грузим только нужные нам библиотеки следующим образом

lua_pushcfunction(vLm,luaopen_base);
lua_pushstring(vLm,"");
lua_call(vLm,1,0);
lua_pushcfunction(vLm,luaopen_math);
lua_pushstring(vLm,"");
lua_call(vLm,1,0);
lua_pushcfunction(vLm,luaopen_table);
lua_pushstring(vLm,"");
lua_call(vLm,1,0);
lua_pushcfunction(vLm,luaopen_string);
lua_pushstring(vLm,"");
lua_call(vLm,1,0);
lua_pushcfunction(vLm,luaopen_package);
lua_pushstring(vLm,LUA_LOADLIBNAME);
lua_call(vLm,1,0);

 

 И вуаля! У нас загрузилась базовая, математическая, табличная библиотека и библиотека для работы с пакетами, а вот библиотека ввода-вывода(IO) и библиотека операционной системы (OS) не загружены и функции их не работают. В процессе работы вы все же выясните, что разрешить пользователю Луа доступ к вводу-выводу все же надо, но как-то ограничить, неплохую возможность для этого я опишу в следующей статье.


Навигация по статьям
Предыдущая статья Портирование структур Си в Lua, прерывание скриптов по времени
Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.

     
Рекламко
     
Поиск
Последние фото
Партнерские ссылки

Текстовые миры Рунета admin@rumud.ru

Яндекс цитирования

Карта сайта 1 Карта сайта 2 Карта сайта 3 Карта сайта 4 Карта сайта 5 Карта сайта 6 Карта сайта 7