Создать ответ 
 
Рейтинг темы:
  • Голосов: 0 - Средняя оценка: 0
  • 1
  • 2
  • 3
  • 4
  • 5
DreamShell 4.0 - Module dev
Автор Сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7133
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 136
Поблагодарили 1171 раз(а) в 729 сообщ.
Сообщение: #9
RE: DreamShell 4.0 - Module dev
В целом ты сам ответил на свой вопрос Smile Я лишь разверну этот ответ.
Есть команды встроенные, они находятся в самом ядре и доступны всегда. А есть команды внешние, это как у любой другой ОС скомпилированный, исполняемый файл или скрипт. Так как система *nix style, то исполняемые файлы в этом случае являются elf файлами, а скрипты в случае с DS - это lua.

С точки зрения сборки, между модулем и командой разницы нет. Разница только в некотором содержимом и в их использовании.
Модуль загружается один раз и весит в памяти пока его не выгрузить. Он может добавить в консоль команду по необходимости. И у него есть 4 спец. функции для работы с ним:

lib_get_name
lib_get_version
lib_open
lib_close

Думаю пояснять о каждой смысла нет и так понятно.

В командах же нет этих спец. функций, там используется только одна - main.
Собираются внешние команды точно так же как и модули, просто загружаются и выполняются в консоли только при вызове. После окончания работы, они выгружаются из памяти.
Это работает конечно несколько медленней, чем если загрузить модуль один раз и потом дергать эту команду, но в некоторых случаях эта скорость и не так важна, лучше пусть будет больше свободной памяти, особенно если команда не часто используемая.

Ну а модуль с командой, делается в следующем случае.
Если в модуле содержится какая-то библиотека, API которой будет доступно при его загрузке. И вместе с этим идет и команда для ее использования из консоли.
Как пример модуля с командой, можно взять bzip2, это и API самой библиотеки и команда для работы с архивами.
А как пример модуля только с API, можно взять допустим модуль tolua. Он не содержит в себе никаких команд, так как это вспомогательный модуль для luaDS, luaKOS и т.п., которые к слову тоже не содержат в себе никаких команд, они просто дополняют lua окружение всякими функциями.
Вот как то так Smile

[Изображение: barbers.png]
23.12.2013 13:20
Вебсайт Найти все сообщения Цитировать это сообщение
Создать ответ 


Сообщения в этой теме
DreamShell 4.0 - Module dev - SWAT - 18.03.2009, 13:02
RE: DreamShell 4.0 - Module dev - SWAT - 23.12.2013 13:20

Похожие темы
Тема: Автор Ответов: Просмотров: Посл. сообщение
  DreamShell dev environment setup on macOS VeraBecker 17 6019 19.09.2023 06:25
Посл. сообщение: SWAT
  Приложение для DreamShell SuperClaw 170 397034 01.05.2016 08:12
Посл. сообщение: SWAT
  DreamShell 4.0 - XML Doc SWAT 6 34204 06.04.2015 13:41
Посл. сообщение: SWAT
  Dreamshell BETA3/BETA4 Direct Swap atreyu187 3 19436 09.09.2011 14:27
Посл. сообщение: SWAT
  DreamShell 4.0 - App dev SWAT 3 21469 22.06.2011 23:09
Посл. сообщение: Jirohn
  DreamShell 4.0 - Bug Report SWAT 54 164366 28.03.2011 07:24
Посл. сообщение: SWAT
  Разработка блокнота для DreamShell zaero 28 86538 31.01.2011 16:02
Посл. сообщение: SWAT
  DreamShell 4.0 - Beta Testing SWAT 76 229267 14.07.2010 20:58
Посл. сообщение: SWAT
  DreamShell 4.0 SWAT 43 136343 05.02.2010 07:10
Посл. сообщение: SWAT
  DreamShell 4.0 - API Doc SWAT 1 18671 18.03.2009 13:04
Посл. сообщение: SWAT

Переход:


Пользователи просматривают эту тему: 1 Гость(ей)