C Програмування

Як використовувати запис системного дзвінка в C

Як використовувати запис системного дзвінка в C

Системний виклик служить основним шлюзом між програмами та ядром операційної системи Linux. Хоча вам майже напевно потрібно мати системний дзвінок протягом усієї вашої кар'єри програмування на С, незалежно від того, чи прагнете ви до виняткової продуктивності чи певного стилю функцій, сховище Glibc або інші стандартні бібліотеки, знайдені в популярних дистрибутивах Linux, будуть достатніми для переважної більшості ваших вимоги. У цьому посібнику ми встановимо концепцію про виклик System System мовою C.

Синтаксис:

#включати
ssize_t запис (int fd, const void * buf, size_t count);

У наведеному вище синтаксисі перший рядок показує бібліотеку для системних викликів. У другому рядку fd означає дескриптор файлу, який насправді є числом, яке визначає відкритий файл процесу. Ключове слово * buf означає буфер. Тут містяться будь-які дані. Далі - підрахунок. Це кількість байтів, яку слід записати в дескриптор файлу з буфера.

Передумови встановлення:

Щоб запустити будь-який мовний код С, вам слід спочатку встановити деякі пакунки в дистрибутиві Linux. Якщо ви хочете побачити додаткову інформацію щодо системного виклику запису, для цього потрібно встановити пакет manpages-dev. Щоб відкрити термінал, використовуйте комбінацію клавіш Ctrl + Alt + T. Відкривши його, напишіть наведену нижче команду apt install, за якою слід встановити ключове слово manpages-dev, щоб встановити manpages.

$ sudo apt install manpages-dev

Для встановлення сторінок сторінки знадобиться деякий час. Зачекайте, поки він завершиться.

Після установки ви зможете побачити додаткову інформацію про системний виклик “write” за допомогою наведеної нижче команди man у оболонці.

$ man 2 напишіть

Сторінка вихідних даних команди “write” подана нижче. Ви можете прочитати інформацію про це. Натисніть q, щоб вийти з інструкції.

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

$ sudo apt встановити gcc

Тим часом під час інсталяції він може попросити вас підтвердити цю дію інсталяції, натиснувши "y" для продовження та "n" для зупинки. Отже, натисніть клавішу "y" і натисніть клавішу Enter.

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

Приклади:

Давайте наведемо кілька прикладів системного виклику “write” у нашому дистрибутиві Linux. Тому відкрийте оболонку командного рядка і створіть у ній новий файл C із крапкою «c». Вам потрібно скористатися наведеною нижче командою nano, щоб швидко створити та відкрити її. Ми дали їй назву «нова.c ”.

$ нано нові.c

Відкриється вікно нижче. Тепер вам потрібно написати вкладений код у цей файл. У цей код ми включили unistd.h бібліотека спочатку. Потім ми створили основну функцію, і в рамках цієї функції ми створили системний виклик “write”. У цьому системному виклику найпершим параметром є дескриптор файлу. У цьому випадку ціле число 1 представляє екран вихідного пристрою, і воно фіксовано. Тож наш результат буде показано на екрані. Другий параметр відображає дані буфера. До нього можна додати що завгодно. І останній параметр показує номер підрахунку даних, вказаних у параметрі буфера. Оскільки ми згадали 5 як номер підрахунку, він буде відображати лише перші 5 байт даних буфера та ігнорувати залишені байти. Збережіть цей код за допомогою комбінації клавіш Ctrl + S і вийдіть із цього файлу за допомогою команди Ctrl + X.

#включати
Int main ()
Пишіть (1, “Aqsa Yasin”, 5);

Тепер у терміналі спробуйте наведену нижче команду gcc для компіляції цього новоствореного коду з ім'ям файлу.

$ gcc новий.c

Давайте перевіримо цей код, використовуючи a.файл, створений під час виконання. Отже, спробуйте нижче a.команда out для перевірки результатів системного виклику “write”. Ми повинні використовувати це з “./ ”, Щоб вибрати файл із поточного каталогу.

$ ./ а.назовні

Вихідні дані, які ви можете побачити, відображали лише слово "Aqsa" через число 5.

Давайте трохи змінимо наш код. Ми змінили число підрахунку на 11, оскільки в наших буферних даних “Aqsa Yasin” в загальній складності є 11 байт. Отже, цього разу на виході буде показано цілі байти рядкових даних “Aqsa Yasin”. Збережіть цей файл, використовуючи Ctrl + S, і завершіть роботу за допомогою комбінації клавіш Ctrl + X.

Давайте скомпілюємо оновлений код, використовуючи нещодавно встановлений компілятор gcc для дистрибутива Linux. Спробуйте ту саму команду gcc разом із назвою файлу, як «новий.c ”.

$ gcc новий.c

Тепер покажіть вивід того самого коду, використовуючи попередню “a.команда ”, як показано нижче. На виході відображається повний рядок "Aqsa Yasin" буфера.

$ ./ а.назовні

Давайте подивимось, як працює код, коли ми беремо число підрахунку більше загальної кількості байт, що містяться в даних буфера. Отже, ми використовуємо рахунок як 30. Збережіть і закрийте файл.

Скомпілюйте той самий оновлений файл, використовуючи команду gcc, як показано нижче.

$ gcc новий.c

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

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

Скомпілюйте код за інструкцією gcc.

$ gcc новий.c

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

$ ./ а.назовні

Висновок:

У цьому посібнику ми розробили концепцію використання системного виклику “Write” у C. Спробуйте всі приклади, щоб зрозуміти ідею системного виклику “write” за допомогою цієї статті.

Битва за Веснот 1.13.6 Розробка випущена
Битва за Веснот 1.13.6, випущений минулого місяця, є шостим випуском розробки в 1.13.x, і це забезпечує низку вдосконалень, особливо до інтерфейсу кор...
Як встановити League of Legends на Ubuntu 14.04
Якщо ви шанувальник League of Legends, то це можливість для вас тестувати League of Legends. Зверніть увагу, що LOL підтримується на PlayOnLinux, якщо...
Встановіть останню стратегічну гру OpenRA на Ubuntu Linux
OpenRA - це ігровий движок Libre / Free Real Time Strategy, який відтворює ранні ігри Вествуда, такі як класичний Command & Conquer: Red Alert. Пошире...