Рубрики
Uncategorized

Mini Linux Shell использует C

Простая оболочка Linux, написанная в C.

Автор оригинала: Sandesh Patil.

Обо мне

Я учитель и разработчик. Я закончил свои мастера в компьютерной технике. Я учил с 2011 года и кодировал с момента моих студенческих дней. Я работал в нескольких компаниях по разработке программного обеспечения, чтобы помочь создать свою продукцию.

Я также сделал много весело проекты. Я делюсь одним из них здесь.

Проблема, которую я хотел решить

Я наткнулся на один такой весело Проект, когда я работал в качестве онлайн-репетитора. Проект был о написании своих Linux Shell. . Я хотел работать над этим, так как это был первый раз, когда я бы разрабатывал что-то в этом роде.

Что такое мини Linux Shell?

Mini Linux Shell — это программа, которая ведет себя точно, лежит раковину Linux, хотя и с ограниченной функциональностью.

  • Он поддерживает встроенные команды оболочки, такие как «CD» и «EXIT».
  • Он поддерживает перенаправление ввода и вывода.
  • Он поддерживает фоновый процесс.

Tech Stack.

Поскольку это раковина Linux, единственный возможный язык для использования был C . ; Как это родной для Linux. Кроме того, Posix Библиотека была необходима для реализации оболочки.

Процесс построения оболочки

Было трудно подумать, откуда начать. Я имел дело с вилка () функция в первый раз. вилка () Создает дочерний процесс, который может работать одновременно с родительским процессом в системе. Детский процесс может быть предоставлен другой задачей для выполнения. В этом случае дочерний процесс выполнит команду, набранную пользователем в оболочке. Так что я начал читать о вилка () Отказ Я, конечно, начался с Человек страница для вилка () Отказ Но этого было недостаточно, поэтому я прочитал некоторые статьи, которые объяснили использование вилка () с примерами.

Сейчас вооружен этими знаниями, я пошел дальше, чтобы найти, как ребенок будет выполнять команду, введенную пользователем. Должен ли я код для всех возможных команд? Ну, ответ был нет Отказ В Linux есть действительно полезная семейство функций, а именно. EXEC () Отказ Эти функции помогают один выполнить команду в Linux. Поэтому я прочитал Человек страница Для этого и узнал, что execvp () Функция — лучший матч для моего кода.

С помощью этого отсортированы, следующее было просто логично кодировать всю программу оболочки, что оказалось довольно простым. Вы можете найти весь код на Github здесь .

Проблемы я столкнулся

Самые сложные части были понимания использования вилка () и установка Обработчик сигналов Отказ

Обработчик сигналов требуется в качестве этой оболочки поддерживает фоновые процессы. Детский процесс, который отправляется на задний план, должен сигнализировать родительский процесс после его выполнения с его выполнением. Это можно сделать с помощью weepepid () Функция с Wnohang вариант. Я должен был прочитать несколько статей на эту тему, чтобы правильно понять ее.

Назначение ключей

Новые вещи, которые я узнал

  • вилка()
  • execvp ()
  • Обработка сигнала

Советы и советы

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

Окончательные мысли и следующие шаги

Такие проекты могут показаться действительно трудными, и мы можем подумать, что реализация может полностью пойти на своих головах (особенно для новичков). Но это не причина сдаваться. Если кто-то продолжает пытаться решить эту проблему, в конце концов, они получат успех и узнают много новых вещей на пути.

Этот проект научил меня много, но теперь он больше ничего не предлагает. Так что я не буду задерживаться на это больше. Многое новые весело Проекты ждут!

Оригинал: «https://www.codementor.io/@sandesh87/how-and-why-i-built-a-mini-linux-shell-using-c-1dqk5olxgw»