Ц Програмирање

Како се користи писање системског позива у језику Ц

Како се користи писање системског позива у језику Ц

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

Синтакса:

#инцлуде
ссизе_т врите (инт фд, цонст воид * буф, сизе_т цоунт);

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

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

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

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

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

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

$ ман 2 пиши

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

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

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

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

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

Примери:

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

$ нано ново.ц

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

#инцлуде
Инт маин ()
Писање (1, „Акса Иасин“, 5);

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

$ гцц ново.ц

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

$ ./ а.напоље

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

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

Саставимо ажурирани код користећи новоинсталирани гцц компајлер за Линук дистрибуцију. Испробајте исту гцц наредбу заједно са именом датотеке као „ново.ц ”.

$ гцц ново.ц

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

$ ./ а.напоље

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

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

$ гцц ново.ц

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

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

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

$ гцц ново.ц

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

$ ./ а.напоље

Закључак:

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

Контролишите и управљајте кретањем миша између више монитора у оперативном систему Виндовс 10
Двоструки приказ миша омогућава вам контролу и конфигурисање кретања миша између више монитора, успоравајући његово кретање близу границе. Виндовс 10/...
ВинМоусе вам омогућава да прилагодите и побољшате кретање показивача миша на Виндовс рачунару
Ако желите да побољшате подразумеване функције показивача миша, користите бесплатни програм ВинМоусе. Додаје још функција које ће вам помоћи да на нај...
Леви тастер миша не ради у оперативном систему Виндовс 10
Ако уз преносни рачунар или стони рачунар користите наменски миш, али тастер миша не ради у оперативном систему Виндовс 10/8/7 из неких разлога, ево н...