Системные вызовы

Что такое системный вызов в Linux и как он работает с примерами

Что такое системный вызов в Linux и как он работает с примерами

Системный вызов - это функция, которая позволяет процессу взаимодействовать с ядром Linux. Это просто программный способ для компьютерной программы заказать средство из ядра операционной системы. Системные вызовы открывают ресурсы операционной системы для пользовательских программ через API (интерфейс прикладного программирования). Системные вызовы могут обращаться только к структуре ядра. Системные вызовы необходимы для всех служб, которым требуются ресурсы.

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

Тонкая обертка для вафель:

Системные вызовы Linux не передаются явно ядру в некоторых программах. Почти все программы используют базовую библиотеку C и предлагают легкую, но важную оболочку для системных вызовов Linux. Затем репозиторий предоставляет сопровождающий машинный вызов Linux после того, как убедитесь, что параметры функции переведены в правильные регистры процессора. Всякий раз, когда оболочка получает данные от системного вызова, она анализирует их и четко передает в программу. Любая машинно-интерактивная операция в программе в конечном итоге преобразуется в системный вызов. Итак, давайте посмотрим на некоторые из них. Существует длинный список системных вызовов Linux, которые мы можем использовать в нашей системе Linux. Вот список некоторых распространенных и наиболее часто используемых системных вызовов Linux.

Давайте обсудим некоторые системные вызовы Linux с использованием языка C в нашей статье, чтобы познакомиться с ними на практике.

Открыть системный вызов:

Мы можем использовать системный вызов Open в нашем дистрибутиве Linux, чтобы быстро открыть документ, который мы укажем в нашем коде языка C. Сначала запустите командный терминал. Вы можете использовать сочетание клавиш «Ctrl + Alt + T». Предположим, у вас есть текстовый файл «test.txt »в домашнем каталоге, и он содержит в себе некоторый контент. Итак, вначале вам нужно создать новое имя файла типа C «new.c »в терминале через редактор nano. Поэтому попробуйте простую инструкцию, приведенную ниже.

$ nano новый.c

Теперь запущен редактор Nano. Введите в него код, показанный ниже. У нас в коде два файловых дескриптора. Оба файла можно открыть с помощью системного вызова open. Первый дескриптор содержит вызов чтения, а второй - функцию записи. Первый открытый вызов - это открытие текстового файла «test.txt »и сохранение его содержимого в файловый дескриптор« fd ». Второй системный вызов open создает файл с именем «target». Документ target был возмещен файловому дескриптору fd1. Инструкция записи используется для расшифровки байтов данных в буфере. Нажмите «Ctrl + S», чтобы сохранить код, и нажмите сочетание клавиш «Ctrl + X», чтобы закрыть файл.

Запустите инструкцию компиляции gcc, чтобы скомпилировать этот код C.

$ gcc новый.c

Выполним код, используя простой «a.out »в оболочке следующим образом:

$ ./ а.вне

Выходные данные переданы в файл «target». Давайте проверим «целевой» файл с помощью запроса «кошка». Экран вывода показывает 20-символьные данные в «целевом» файле.

цель $ cat

Системный вызов Exec:

Системный вызов exec отключается для запуска файла, который в данный момент обрабатывается. Заменяется бывший исполняемый файл, и текущий файл используется всякий раз, когда вызывается exec. Используя системный вызов exec, мы можем предположить, что это приведет к замене старого документа или приложения в цикле новым. Новое программное обеспечение используется для отмены всего материала процесса. Документ, заголовок которого указан в операторе всякий раз, когда вызывается exec (), заменяется разделом информации о пользователе, который запускает системный вызов exec () (). Итак, откройте командный терминал и, используя редактор nano, создайте новый файл типа C следующим образом:

$ nano exp.c

Редактор открыт сейчас. Напишите в нем весь приведенный ниже код языка C. В него включены три основные библиотеки. После этого была создана основная функция. Оператор печати показывает строковые данные и идентификатор процесса файла «exp.c ”. Для этого использовалась функция getpid (). Затем у нас есть массив символьных типов с некоторыми значениями в нем. Системный вызов exec использовался для принятия имени файла и однострочного массива выше в качестве аргумента. Теперь файл «привет.c ”будут обработаны. После этого идет еще один оператор печати, но он никогда не будет выполнен. Нажмите «Ctrl + S», чтобы сохранить этот файл. Нажмите «Ctrl + X», чтобы выйти.

Пришло время создать еще один файл c, «привет.c ”с помощью редактора nano. Для этого воспользуйтесь приведенным ниже запросом в оболочке.

$ nano привет.c

Напишите в нем приведенный ниже код. Этот код содержит два оператора печати в основной функции. Первый печатает только строку, указанную в нем, а второй печатает строку, извлекая идентификатор процесса текущего используемого файла, который является «привет.c ”.

Скомпилируем оба файла один за другим с помощью gcc.

$ gcc -o exp exp.c

$ gcc -o привет привет.c

Когда мы выполняем exp.c, он выведет первый оператор печати из exp.c файла и обе строки печати из hello.c файл.

$ ./ exp

Заключение:

Мы разработали всю концепцию системных вызовов Linux и то, как их можно использовать в вашей системе Linux. Мы использовали Ubuntu 20.04 при реализации этой концепции.

WinMouse позволяет настраивать и улучшать движение указателя мыши на ПК с Windows
Если вы хотите улучшить функции указателя мыши по умолчанию, используйте бесплатное ПО WinMouse. Он добавляет дополнительные функции, которые помогут ...
Левая кнопка мыши не работает в Windows 10
Если вы используете выделенную мышь со своим ноутбуком или настольным компьютером, но левая кнопка мыши не работает в Windows 10/8/7 по какой-то причи...
Курсор прыгает или перемещается случайным образом при наборе текста в Windows 10
Если вы обнаружите, что ваш курсор мыши прыгает или перемещается сам по себе, автоматически, случайным образом при вводе текста на ноутбуке или компью...