Оболочка ОС

Тема в разделе "Общие вопросы по С и С++", создана пользователем bonfunk, 11 июн 2006.

  1. bonfunk

    bonfunk Гость

    Требуется написать на С++, а затем откомпилить на Unix прогу, имитирующую оболочку последней. Готовых программ не нужно(ну разве что, уже есть%), просто помогите советом, ибо хочу догнать все сам. Требования к программе следующие:
    1.Программа может принимать на входе следующий параметр: debug. Если значение debug равно true (on, включается режим отладки, если значение равно false (off, 0), режим отладки выключен.
    2. Команды вводятся пользователем с клавиатуры и завершаются нажатием клавиши <Enter>. Каждая команда может имеет следующий формат: <команда1> <аргумент1> ... <аргументN> | ... | <командаM> <аргумент1> ... <аргументN> Командная строка – не длиннее 512 символов. Символ '|' означает, что между командами до и после символа существует канал
    3. если произошла ошибка, используйте функцию perror() для вывода детального сообщения об ошибке
    4.можно использовать дескрипторы файлов стандартного ввода и стандартного вывода (соответственно 0 и 1)для упрощения передачи информации из одного процесса в другой. Для обработки командной строки целесообразно использовать функции strpbrk() и strchr()
    5. после прочтения каждой строки программа должна печатать выполняемые команды если включен режим отладки. Кроме того, при включенном режиме отладки должны выдаваться сообщения о всех выполняемых операци-
    ях (создание канала, создание нового процесса и т.п.)
    6. для каждой выполняемой команды должен создаваться отдельный процесс
    7. после работы с каналами, необходимо все используемые каналы закрывать

    Такие пироги. Есть идея использования execl для вызова той или иной командной строки, создать процесс для каждой команды труда не составит. Вот только не очень хорошо представляю, как в таком случае можно использовать дискрипторы файлов. Также затрудняюсь реализовать потоки, тк не очень хорошо понимаю их смысл.
    Если кто может помочь советом, буду весьма благодарен!
     
Загрузка...

Поделиться этой страницей