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

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

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

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

Синтаксис:

#включать
ssize_t write (int fd, const void * buf, size_t count);

В этом синтаксисе выше первая строка показывает библиотеку для системных вызовов. Во второй строке fd обозначает дескриптор файла, который на самом деле является числом, указывающим открытый файл процесса. Ключевое слово * buf означает буфер. Это содержит любые данные в нем. Далее идет счет. Это количество байтов, которые должны быть записаны в дескриптор файла из буфера.

Необходимые компоненты для установки:

Чтобы запустить любой код языка C, вам необходимо сначала установить некоторые пакеты в дистрибутиве Linux. Если вы хотите получить дополнительную информацию о системном вызове write, вам необходимо установить для этого пакет manpages-dev. Чтобы открыть терминал с помощью сочетания клавиш Ctrl + Alt + T. После его открытия напишите приведенную ниже команду apt install, за которой следует ключевое слово manpages-dev для установки страниц руководства.

$ sudo apt install manpages-dev

Установка страниц руководства займет некоторое время. Подождите, пока он будет завершен.

После установки вы можете увидеть дополнительную информацию о системном вызове «write» с помощью приведенной ниже команды man в оболочке.

$ man 2 написать

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

Пришло время установить пакет «Gcc» в вашу систему Linux для работы на языке C. Для этого откройте оболочку и напишите приведенную ниже команду apt install, за которой следует ключевое слово «gcc».

$ sudo apt install gcc

Между тем, во время установки он может попросить вас подтвердить это действие по установке, нажав «y», чтобы продолжить, и «n», чтобы остановить его. Итак, нажмите клавишу «y» и нажмите клавишу Enter.

Он будет установлен в вашей системе в течение нескольких минут, и последние строки вывода будут такими, как показано на снимке ниже.

Примеры:

Приведем несколько примеров системного вызова write в нашем дистрибутиве Linux. Поэтому откройте оболочку командной строки и создайте в ней новый файл C с расширением точки «c». Вы должны использовать приведенную ниже команду nano, чтобы быстро создать и открыть ее. Мы дали ему название «новый.c ”.

$ nano новый.c

Откроется следующее окно. Теперь вам нужно написать прикрепленный код в этом файле. В этот код мы включили unistd.h библиотека сначала. Затем мы создали основную функцию, и в рамках этой функции мы создали системный вызов «write». В этом системном вызове самым первым параметром является дескриптор файла. В этом случае целое число 1 представляет экран устройства вывода, и оно фиксировано. Таким образом, наш результат будет показан на экране. Второй параметр показывает данные буфера. Вы можете добавить к нему что угодно. И последний параметр показывает номер счета для данных, указанных в параметре буфера. Как мы уже упоминали 5 как число счетчика, он покажет только первые 5 байтов данных буфера и проигнорирует оставшиеся байты. Сохраните этот код с помощью сочетания клавиш Ctrl + S и выйдите из этого файла с помощью команды Ctrl + X.

#включать
Int main ()
Напишите (1, «Акса Ясин», 5);

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

$ gcc новый.c

Давайте проверим этот код, используя по умолчанию a.выходной файл, созданный во время выполнения. Итак, попробуйте следующее:.out команда для проверки вывода системного вызова «write». Мы должны использовать его с "./ », Чтобы выбрать файл из текущего каталога.

$ ./ а.вне

В выводе, который вы видите, отображается только слово «Aqsa» из-за числа 5.

Давайте немного изменим наш код. Мы изменили счетчик на 11, потому что в нашем буфере данных «Акса Ясин» всего 11 байтов. Итак, на этот раз вывод покажет целые байты строковых данных «Aqsa Yasin». Сохраните этот файл с помощью Ctrl + S и выйдите с помощью сочетания клавиш Ctrl + X.

Скомпилируем обновленный код с помощью недавно установленного компилятора gcc для дистрибутива Linux. Попробуйте использовать ту же команду gcc вместе с именем файла как «новый.c ”.

$ gcc новый.c

Теперь отобразите вывод того же кода, используя предыдущий «a.out », как показано ниже. Вывод показывает полную строку «Aqsa Yasin» буфера.

$ ./ а.вне

Давайте посмотрим, как работает код, если мы возьмем счетное число больше, чем общее количество байтов, содержащихся в данных буфера. Итак, мы использовали счетчик как 30. Сохраните и закройте файл.

Скомпилируйте тот же обновленный файл с помощью команды gcc, как показано ниже.

$ gcc новый.c

Теперь запустите файл, используя a.out, и в выходных данных будут отображаться данные буфера, а также некоторое значение мусора с ним, как показано в выходных данных моментального снимка ниже.$ ./ а.вне

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

Скомпилируйте код по инструкции gcc.

$ gcc новый.c

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

$ ./ а.вне

Заключение:

В этом руководстве мы разработали концепцию использования системного вызова «Write» в C. Попробуйте все примеры, чтобы понять идею системного вызова write, используя эту статью.

Лучшие игры с командной строкой для Linux
Командная строка - не только ваш главный союзник при использовании Linux - она ​​также может быть источником развлечений, потому что вы можете использ...
Лучшие приложения для сопоставления геймпадов для Linux
Если вам нравится играть в игры на Linux с помощью геймпада вместо стандартной системы ввода с клавиатуры и мыши, для вас есть несколько полезных прил...
Полезные инструменты для геймеров Linux
Если вам нравится играть в игры на Linux, скорее всего, вы использовали приложения и утилиты, такие как Wine, Lutris и OBS Studio, для улучшения игров...