Программирование на C

Как использовать открытый системный вызов в C

Как использовать открытый системный вызов в C

Системные вызовы используются в дистрибутивах Linux для обеспечения доступа к ОС Linux и программам. Операционная система Linux использует библиотеку Glibc для поддержки системных вызовов в ней при использовании языка C. Есть еще много способов использовать системные вызовы. В этой статье мы обсудим системный вызов open в системе Linux. Системный вызов «Открыть» использовался для быстрого открытия файла, указанного в пути. Он сообщает нам о файловом дескрипторе файла, созданного пользователем. Мы использовали Ubuntu 20.04, чтобы получить практический системный вызов Open.

Установить библиотеки

Язык C требует установки некоторых дополнительных пакетов библиотеки в качестве предварительных условий. Прежде всего, вам необходимо установить пакет manpages-dev, чтобы проверить информацию о системных вызовах. Откройте терминал командной строки из области действий и выполните приведенную ниже инструкцию для установки страниц руководства.

$ sudo apt install manpages-dev

Результат завершения установки представлен ниже.

Теперь мы проверим системный вызов open с помощью команды «man», как показано ниже.

$ человек 2 открыт

Страница вывода руководства для системного вызова «Открыть» показана ниже. Вы можете увидеть дополнительную информацию об этом. Нажмите кнопку «q», чтобы выйти из него.

Приведенный выше синтаксис показывает первые три строки необходимых библиотек, которые необходимо добавить для системных вызовов. Для системного вызова open доступны три синтаксиса. Первый синтаксис показывает «путь», то есть имя файла, который нужно открыть. Второй параметр, «флаги», показывает режим файла, e.грамм., читать или писать. Второй синтаксис можно использовать, когда файл не существует. Режим параметров используется для отображения прав доступа к файлу.

Пришло время установить компилятор GCC для отладки кода C в Ubuntu 20.04 Дистрибутив Linux. Для этого выполните приведенную ниже инструкцию в оболочке, чтобы сделать это.

$ sudo apt install gcc

Вам необходимо нажать «Y», чтобы продолжить установку компилятора GCC, в противном случае нажмите кнопку «n», чтобы закрыть установку. Так что нажмите кнопку «y» и нажмите Enter, чтобы продолжить.

Результат завершения показан ниже.

Пример 01

Давайте посмотрим на очень простой пример системного вызова «Открыть». Во-первых, откройте командную оболочку и создайте новый текстовый файл «test.txt », используя простую сенсорную команду, как показано ниже:

$ сенсорный тест.текст

Добавьте в него данные вручную. Вы можете увидеть данные в файле, используя приведенную ниже команду cat.

$ cat тест.текст

Теперь давайте создадим новый файл C с помощью команды nano в оболочке, как показано ниже.

$ nano новый.c

Откроется приведенный ниже файл GNU nano. Вы должны ввести в нем указанный ниже код языка C. Вы можете видеть, что мы добавили необходимые пакеты библиотек для правильного выполнения кода C. После этого мы определили основную функцию для работы с системным вызовом Open. Мы объявили две целочисленные переменные. Переменная «n» используется для подсчета значений буфера, а «fd» - для дескриптора файла. Мы объявили буферный массив символьного типа как «buf» размером 50. Системный вызов open использовался для чтения содержимого файла «test.txt »и верните его в файловый дескриптор. «O_RDONLY» использовалось для чтения. В следующей строке показан системный вызов read для сбора 10 байтов из буфера и возврата их в целое число n. Кроме того, команда записи использовалась для записи содержимого или данных буфера в файловый дескриптор, который является экраном вывода. В нашем случае прямо сейчас. Сохраните этот файл с помощью Ctrl + S и закройте его с помощью команды Ctrl + X.

#включать
#включать
#включать
#включать
int main ()

int n, fd;
char buf [50];
fd = open («тест.txt », O_RDONLY);
n = читать (fd, buf, 10);
напишите (1, buf, 10);

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

$ gcc новый.c

Теперь пора проверить вывод кода C для открытого системного вызова. Давайте использовать нижеприведенный.команда out в оболочке. На выходе отображаются 10 байтов из содержимого файла «test.текст".

$ ./ а.вне

Давайте возьмем еще один пример, чтобы записать содержимое одного файла в другой файл с помощью системного вызова Open. Чтобы создать новый файл C с помощью команды nano, как показано ниже.

$ nano новый.c

Так что возьмите тот же код с небольшими изменениями в нем. Мы определили другой файловый дескриптор в коде как «fd1». Весь код такой же, за исключением одной дополнительной строки. Вторая последняя строка кода использовала системный вызов open для создания нового файла с именем «target», используя O_CREAT и режим только для записи как O_WRONLY. 0642 показывает привилегии, назначенные этому файлу. И файл был возвращен в новый файловый дескриптор. В следующей строке показана команда для записи байтов содержимого в буфер в соответствии с его файловым дескриптором. Сохраните файл и закройте его.

Выполните команду компиляции gcc для отладки языкового файла C.

$ gcc новый.c

Чтобы отобразить вывод кода C, попробуйте a.из инструкции в оболочке, как показано ниже. Нет вывода, потому что вывод был перенаправлен во вновь созданный файл «target».

$ ./ а.вне

Давайте проверим данные целевого файла с помощью команды cat. Вывод показывает, что в файле 20 байтов.

цель $ cat

Заключение

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

Как изменить направление прокрутки мыши и сенсорной панели в Windows 10
Мышь а также Сенсорная панельs не только упрощают вычисления, но и делают их более эффективными и требуют меньше времени. Мы не можем представить себе...
Как изменить указатель мыши и размер курсора, цвет и схему в Windows 10
Указатель мыши и курсор в Windows 10 - очень важные аспекты операционной системы. То же самое можно сказать и о других операционных системах, так что,...
Бесплатные движки с открытым исходным кодом для разработки игр для Linux
В этой статье будет рассмотрен список бесплатных игровых движков с открытым исходным кодом, которые можно использовать для разработки 2D- и 3D-игр в L...