Главная страница


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Artem Nozdrin                        2:5022/115.156 24 Apr 2003  02:41:30
 To : All
 Subject : Интерпретатор команд в Linux
 -------------------------------------------------------------------------------- 
 
 
 Интересует как можно сделать такой интерпретатор.
 Если кто может - подскажите ссылки в Internet, где можно найти похожие примеры.
 Или может быть кто встречался с этим в книгах или сам занимался созданием
 подобного рода интерпретатора под Linux.
 Очень буду рад любой помощи.
 Hеобходимо создать интерпретатор команд myshell в виде многомодульного
 приложения типа клиент-сервер, где каждый модуль выполняет функции программного 
 клиента и/или сервера и реализуется посредством процесса или программного
 потока. Модули взаимодействуют между собой через объекты IPC.
 Предлагается реализовать интерпретатор команд, состоящий из следующих
 модулей-серверов:
 - сервер ввода командных строк из потока stdin;
 - сервер исполнения интерактивной команды (сервер s0);
 - серверы исполнения неинтерактивных команд (серверы s1, :, sn);
 - файловый сервер (сервер sr);
 - сервер, накапливающий список команд, полученных интерпретатором для выполнения
 в - течение сеанса его работы (сервер sh);
 - сервер вывода в поток stdout результатов выполнения команд.
 В контексте данной архитектуры интерпретатор команд функционирует следующим
 образом. Сервер ввода считывает очередную командную строку из потока stdin и
 разбивает ее на команды. Далее он производит анализ каждой команды: определяет
 тип команды - интерактивная или неинтерактивная, выделяет имя команды и ее
 аргументы и проверяет их правильность. Если в командной строке обнаружены
 ошибки, в сервер вывода через неименованный канал передается сообщение об
 ошибке. Если ошибок нет, то команды командной строки передаются на сервер sh для
 добавления в список истории работы командного интерпретатора.
 Команды, выделенные из командной строки, направляются на серверы исполнения
 команд: интерактивные команды - через объект IPC1 на сервер s0  исполнения
 интерактивной команды, а неинтерактивные команды - через объект IPC2 на серверы 
 s1, :, sn  исполнения неинтерактивных команд. Предполагается, что сервер s0
 создается сразу же после запуска интерпретатора команд, а серверы s1, :, sn  в
 зависимости от варианта задания создаются либо сразу же после запуска
 интерпретатора команд, либо динамически на время выполнения неинтерактивных
 команд.
 Серверы исполнения команд при необходимости обращаются через объект(ы) IPC3 к
 серверу файлов для чтения или записи файлов. Объект(ы) IPC3 должны обеспечивать 
 двустороннюю связь между серверами s0, s1, :, sn  и файловым сервером.
 Результаты выполнения каждой команды через объект IPC4 передаются на сервер
 вывода в поток stdout. В начале исполнения каждой неинтерактивной команды из
 серверов s1, :, sn  на сервер вывода передается для вывода диспетчерский номер
 задания (неинтерактивного процесса), присвоенный интерпретатором (серверами s1, 
 :, sn ), и идентификатор процесса или потока, присвоенный ядром операционной
 системы. Порядковый номер последнего из полученных заданий хранится в объекте
 IPC5.
 
 IPC1 - pipe
 IPC2 - sem - семафоры стандарта System V;
 IPC3 - pipe
 IPC4 - pipe
 IPC5 - msg - очередь сообщений стандарта System V
 Серверы - процессы.
 С наилучшими пожеланиями... Artem.
 --- GoldED+/W32 1.1.5-1017
  * Origin: Under construction... (2:5022/115.156)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Интерпретатор команд в Linux   Artem Nozdrin   24 Apr 2003 02:41:30 
 Re: Интерпретатор команд в Linux   Alexandr S. Agranovsky   26 Apr 2003 09:40:06 
 Интерпретатор команд в Linux   Artem Nozdrin   25 Apr 2003 01:08:34 
 Re: Интерпретатор команд в Linux   Artem Chuprina   28 Apr 2003 13:13:05 
 Re: Интерпретатор команд в Linux   Alex Korchmar   28 Apr 2003 13:21:44 
 Re: Интерпретатор команд в Linux   Aleksey Cheusov   29 Apr 2003 21:59:10 
Архивное /ru.linux/45893ea716b9.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional