Системски позив служи као примарни пролаз између програма и језгра оперативног система Линук. Иако бисте готово сигурно морали имати системски позив током целе каријере програмирања на Ц -у, без обзира на то да ли циљате на изузетну продуктивност или одређени стил функција, спремиште Глибц или друге стандардне библиотеке које се налазе у популарним Линук дистрибуцијама биће довољне за већину ваших захтеви. У овом водичу ћемо успоставити концепт позива система писања на језику Ц.
Синтакса:
#инцлудессизе_тписати(инт фд, цонст воид*буф, сизе_т цоунт);
У овој горњој синтакси, први ред приказује библиотеку за системске позиве. У другом реду, фд означава дескриптор датотеке који је заиста број који одређује отворену датотеку процеса. Кључна реч *буф означава бафер. Ово садржи све податке у себи. Следеће је рачунање. То је број бајтова који се уписују у дескриптор датотеке из бафера.
Предуслови за инсталирање:
Да бисте покренули било који код језика Ц, морате прво инсталирати неке пакете у дистрибуцију Линука. Ако желите да видите додатне информације о системском позиву писања, морате да инсталирате пакет манпагес-дев да бисте то учинили. Да бисте отворили терминал помоћу тастерске пречице Цтрл+Алт+Т. Након што га отворите, напишите доњу наредбу апт инсталл коју прати кључна реч манпагес-дев да бисте инсталирали странице.
$судопогоданинсталирајманпагес-дев
Инсталирање страница ће потрајати неко време. Сачекајте да се заврши.
Након инсталације, можете видјети додатне информације о системском позиву писања путем доње наредбе ман у љусци.
$човече 2 писати
Излазна ман страница за наредбу врите дата је испод. Можете прочитати информације о томе. Притисните к да бисте изашли из приручника.
Сада је време да инсталирате Гцц пакет у свој Линук систем да бисте радили на језику Ц. За то отворите љуску и напишите доњу наредбу апт инсталл коју прати кључна реч гцц.
$судопогоданинсталирај гцц
У међувремену, током инсталације, можда ће бити затражено да потврдите ову радњу инсталације притиском на и за наставак и н за заустављање. Дакле, додирните тастер и и притисните тастер Ентер.
Биће инсталиран у ваш систем у року од неколико минута, а последњи редови излаза биће као што је приказано на слици испод.
Примери:
Хајде да имамо неке примере системског позива писања у нашој дистрибуцији Линука. Стога отворите љуску командне линије и у њој креирајте нову Ц датотеку са екстензијом дот ц. Морате да користите доњу нано команду да бисте је брзо креирали и отворили. Дали смо му име нев.ц.
$нанонев.ц
Отвориће се прозор испод. Сада морате да унесете причвршћени код у ову датотеку. У овај код смо прво укључили унистд.х библиотеку. Затим смо креирали главну функцију, а унутар ове функције смо креирали системски позив за писање. У овом системском позиву, први параметар је дескриптор датотеке. У овом случају, цео број 1 представља екран излазног уређаја и он је фиксиран. Тако ће наш излаз бити приказан на екрану. Други параметар приказује податке о баферу. Можете му додати било шта. Последњи параметар приказује број за податке дате у параметру бафера. Као што смо споменули 5 као број за бројање, он ће приказати само првих 5 бајтова података бафера и занемарити преостале бајтове. Сачувајте овај код помоћу тастерске пречице Цтрл+С и изађите из ове датотеке помоћу команде Цтрл+Кс.
#инцлудеИнт маин()
{Пишите(1Акса Иасин5);}
Сада у терминалу покушајте доњу наредбу гцц да саставите овај новостворени код са именом датотеке.
$гццнев.ц
Хајде да проверимо овај код користећи подразумевану датотеку а.оут креирану за време извођења. Дакле, покушајте са наредном командом а.оут да проверите излаз системског позива писања. Морамо га користити са ./ да одаберемо датотеку из тренутног директоријума.
$./а.оутНа излазу који видите можете видети само реч Акса због броја 5.
Променимо мало наш код. Број рачунања смо променили на 11 јер имамо укупно 11 бајтова у нашим подацима о баферу Акса Иасин. Тако ће овај пут излаз приказати читаве бајтове стринг података Акса Иасин. Сачувајте ову датотеку помоћу Цтрл+С и затворите помоћу тастерске пречице Цтрл+Кс.
Хајде да компајлирамо ажурирани код користећи новоинсталирани гцц компајлер за дистрибуцију Линука. Покушајте са истом гцц командом заједно са именом датотеке као нев.ц.
$гццнев.ц
Сада прикажите излаз истог кода користећи претходну наредбу а.оут као у наставку. Излаз приказује пуни низ Акса Иасин бафера.
$./а.оут
Погледајмо како код функционише када узмемо број броја већи од укупног броја бајтова које подаци бафера садрже. Дакле, користили смо цоунт као 30. Сачувајте и затворите датотеку.
Саставите исту ажурирану датотеку помоћу наредбе гцц као испод.
$гццнев.ц
Сада извршите датотеку помоћу наредбе а.оут, а излаз ће приказати податке о баферу, као и неку вредност смећа са њима као што је приказано у излазном снимку испод. $ ./А.оут
Такође можете проверити укупан број бајтова уписаних у датотеку користећи доњи код у истој датотеци.
Саставите код према гцц инструкцијама.
$гццнев.ц
Излаз приказује укупан број бајтова, укључујући податке о међуспремнику и прекид линије, помоћу наредбе а.оут.
$./а.оут
Закључак:
У овом водичу разрадили смо концепт употребе системског позива Врите у Ц. Испробајте све примере да бисте разумели идеју системског позива писања користећи овај чланак.