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

How Use Write System Call C



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

Синтаксис:

#включают

ssize_tзаписывать(int fd, const void*buf, size_t count);

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







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

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



$судоподходящийустановитьmanpages-dev



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





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



$человек 2 записывать

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

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

$судоподходящийустановить gcc

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

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

Примеры:

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

$наноnew.c

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

#включают

Int main()

{Напишите(1Акса Ясин5);}

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

$gccnew.c

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

$./а. выход

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

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

Давайте скомпилируем обновленный код, используя только что установленный компилятор gcc для дистрибутива Linux. Попробуйте использовать ту же команду gcc вместе с именем файла как new.c.

$gccnew.c

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

$./а. выход

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

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

$gccnew.c

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

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

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

$gccnew.c

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

$./а. выход

Заключение:

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