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