Како се користи Запиши системски позив на језику Ц.

How Use Write System Call C



Системски позив служи као примарни пролаз између програма и језгра оперативног система Линук. Иако бисте готово сигурно морали имати системски позив током целе каријере програмирања на Ц -у, без обзира на то да ли циљате на изузетну продуктивност или одређени стил функција, спремиште Глибц или друге стандардне библиотеке које се налазе у популарним Линук дистрибуцијама биће довољне за већину ваших захтеви. У овом водичу ћемо успоставити концепт позива система писања на језику Ц.

Синтакса:

#инцлуде

ссизе_тписати(инт фд, цонст воид*буф, сизе_т цоунт);

У овој горњој синтакси, први ред приказује библиотеку за системске позиве. У другом реду, фд означава дескриптор датотеке који је заиста број који одређује отворену датотеку процеса. Кључна реч *буф означава бафер. Ово садржи све податке у себи. Следеће је рачунање. То је број бајтова који се уписују у дескриптор датотеке из бафера.







Предуслови за инсталирање:

Да бисте покренули било који код језика Ц, морате прво инсталирати неке пакете у дистрибуцију Линука. Ако желите да видите додатне информације о системском позиву писања, морате да инсталирате пакет манпагес-дев да бисте то учинили. Да бисте отворили терминал помоћу тастерске пречице Цтрл+Алт+Т. Након што га отворите, напишите доњу наредбу апт инсталл коју прати кључна реч манпагес-дев да бисте инсталирали странице.



$судопогоданинсталирајманпагес-дев



Инсталирање страница ће потрајати неко време. Сачекајте да се заврши.





Након инсталације, можете видјети додатне информације о системском позиву писања путем доње наредбе ман у љусци.



$човече 2 писати

Излазна ман страница за наредбу врите дата је испод. Можете прочитати информације о томе. Притисните к да бисте изашли из приручника.

Сада је време да инсталирате Гцц пакет у свој Линук систем да бисте радили на језику Ц. За то отворите љуску и напишите доњу наредбу апт инсталл коју прати кључна реч гцц.

$судопогоданинсталирај гцц

У међувремену, током инсталације, можда ће бити затражено да потврдите ову радњу инсталације притиском на и за наставак и н за заустављање. Дакле, додирните тастер и и притисните тастер Ентер.

Биће инсталиран у ваш систем у року од неколико минута, а последњи редови излаза биће као што је приказано на слици испод.

Примери:

Хајде да имамо неке примере системског позива писања у нашој дистрибуцији Линука. Стога отворите љуску командне линије и у њој креирајте нову Ц датотеку са екстензијом дот ц. Морате да користите доњу нано команду да бисте је брзо креирали и отворили. Дали смо му име нев.ц.

$нанонев.ц

Отвориће се прозор испод. Сада морате да унесете причвршћени код у ову датотеку. У овај код смо прво укључили унистд.х библиотеку. Затим смо креирали главну функцију, а унутар ове функције смо креирали системски позив за писање. У овом системском позиву, први параметар је дескриптор датотеке. У овом случају, цео број 1 представља екран излазног уређаја и он је фиксиран. Тако ће наш излаз бити приказан на екрану. Други параметар приказује податке о баферу. Можете му додати било шта. Последњи параметар приказује број за податке дате у параметру бафера. Као што смо споменули 5 као број за бројање, он ће приказати само првих 5 бајтова података бафера и занемарити преостале бајтове. Сачувајте овај код помоћу тастерске пречице Цтрл+С и изађите из ове датотеке помоћу команде Цтрл+Кс.

#инцлуде

Инт маин()

{Пишите(1Акса Иасин5);}

Сада у терминалу покушајте доњу наредбу гцц да саставите овај новостворени код са именом датотеке.

$гццнев.ц

Хајде да проверимо овај код користећи подразумевану датотеку а.оут креирану за време извођења. Дакле, покушајте са наредном командом а.оут да проверите излаз системског позива писања. Морамо га користити са ./ да одаберемо датотеку из тренутног директоријума.

$./а.оут

На излазу који видите можете видети само реч Акса због броја 5.

Променимо мало наш код. Број рачунања смо променили на 11 јер имамо укупно 11 бајтова у нашим подацима о баферу Акса Иасин. Тако ће овај пут излаз приказати читаве бајтове стринг података Акса Иасин. Сачувајте ову датотеку помоћу Цтрл+С и затворите помоћу тастерске пречице Цтрл+Кс.

Хајде да компајлирамо ажурирани код користећи новоинсталирани гцц компајлер за дистрибуцију Линука. Покушајте са истом гцц командом заједно са именом датотеке као нев.ц.

$гццнев.ц

Сада прикажите излаз истог кода користећи претходну наредбу а.оут као у наставку. Излаз приказује пуни низ Акса Иасин бафера.

$./а.оут

Погледајмо како код функционише када узмемо број броја већи од укупног броја бајтова које подаци бафера садрже. Дакле, користили смо цоунт као 30. Сачувајте и затворите датотеку.

Саставите исту ажурирану датотеку помоћу наредбе гцц као испод.

$гццнев.ц

Сада извршите датотеку помоћу наредбе а.оут, а излаз ће приказати податке о баферу, као и неку вредност смећа са њима као што је приказано у излазном снимку испод. $ ./А.оут

Такође можете проверити укупан број бајтова уписаних у датотеку користећи доњи код у истој датотеци.

Саставите код према гцц инструкцијама.

$гццнев.ц

Излаз приказује укупан број бајтова, укључујући податке о међуспремнику и прекид линије, помоћу наредбе а.оут.

$./а.оут

Закључак:

У овом водичу разрадили смо концепт употребе системског позива Врите у Ц. Испробајте све примере да бисте разумели идеју системског позива писања користећи овај чланак.