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

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

Како се користи системски позив за анкете у језику Ц
Функција полл () омогућава програмима мултиплексирање уноса и излаза кроз низ дескриптора датотека. Другим речима, системски позив полл () аналоган је системском позиву селецт () у раду јер задржава пожар за један од неколико дескриптора датотека постајући доступан за И / О. Анкета () испитује додељени дескриптор документа ради пописа догађаја (догађаја) у инцидентима за сваки елемент низа који на њега указују дескриптори датотека. Метода полл () може одредити којем ће од дескриптора датотека програм читати или уписивати детаље који су видели ове инциденте. У овом водичу ћемо користити Убунту 20.04 да бисмо разумели концепт полл () системског позива на Линуку корак по корак.

Синтакса:

инт анкета (струцт поллфд * уфдс, унсигнед инт нфдс, инт тимеоут);

Аргумент „фдс“ одређује дескрипторе докумената које треба проверити, као и инциденте од значаја за сваки од њих. То је референца на низ који има по један елемент за сваки дескриптор отвореног документа. Елементи низа су поллфд структуре, где фд означава отворени дескриптор документа, а сва дешавања и поновни догађаји, обично звани битмаске, генеришу се стварањем спајања одговарајућих заставица догађаја:

ПОЛЛИН:

Осим података високог приоритета, информативни подаци се могу читати, чак и ако су блокирани. Такође, ако је порука одговора нула величина, овај сигнал заставице се генерише за СТРЕАМС у ревентима. Ова застава има исто значење као ПОЛЛРДНОРМ | ПОЛЛРДБАНД.

ПОЛЛРДНОРМ:

Без прекида могу се очитавати уобичајени информативни подаци. Информације о примарном приоритетном опсегу 0 могу се читати упркос прекиду за СТРЕАМС. А ако је порука одговора нулте дужине, овај сигнал се генерише у поновним догађајима.

ПОЛЛРДБАНД:

Подаци о примарној бризи читаће се упркос кашњењу. Информације о опсезима приоритета већим од нуле могу се читати упркос ометању у СТРЕАМС. А ако је одговор поруке нултог трајања, овај сигнал се шири у ревентима.

ПОЛЛПРИ:

Можда постоје изузеци од дескриптора документа. Информације са главним приоритетом могу се читати без блокирања. Такође, ако је одзив нултог трајања, овај сигнал се шири за СТРЕАМС у ревентима.

АНКЕТА:

Корисници могу да испишу користећи заставицу ПОЛЛОУТ. Лишени заустављања, типични подаци се могу снимати. Информације о преференци опсега 0 могу се снимити упркос прекиду у СТРЕАМС-у.

ПОЛЛВРНОРМ:

Ради исто као и ПОЛЛОУТ.

ПОЛЛВРБАНД:

Подаци са највише приоритета биће написани помоћу ове заставице. Информације о опсезима преференција више од нуле за СТРЕАМС могу се снимати без блокирања. Ова активност процењује само опсеге на које је већ записано најмање једном, јер на овом СТРЕАМ-у није написан ниједан опсег преференци.

ПОЛЛЕРР:

То је стање грешке и јавља се само када систем или проток наиђе на проблем. Овај симбол односи се само на заштитну битну маску; током учесника активности се превиђа.

ПОЛЛХУП:

Одређује стање прекида и јавља се само када је веза са системом онемогућена. Ова појава и АНАЛИЗА су подједнако компатибилни; када се једном појави проблем, ток се никада неће написати.

ПОЛЛНВАЛ:

Ово наводи неважећи или необичан захтев. Ова активност, међутим, не искључује учешће у ПОЛЛИН-у, ПОЛЛРДНОРМ, ПОЛЛРДБАНД или ПОЛЛПРИ. Овај симбол се односи само на заштитну битмаску; превиђа се код учесника догађаја.

Пример системског позива за анкету:

Обавља исту улогу као селецт (), иако у већем обиму. Анкета () је доступна на било којој Линук машини заснованој на Глибц-у. Старија језгра имитирају анкету () са селецт () у Ц библиотеци. Међутим, програми не би требало да праве разлику. Ево примера како се осећа анкета (). Дакле, прво отворите терминал командне линије помоћу пречице „Цтрл + Алт + Т“.”Након отварања, морамо створити датотеку типа Ц да бисмо у њу написали код типа Ц. За ово користимо нано едитор. Дакле, испробајте доњу нано команду у терминалу заједно са именом датотеке Ц.

$ нано ново.ц

Сада је отворен нано едитор за датотеку Ц „нев“. Прво морате у њу укључити неке библиотеке, посебно „анкету.х ”библиотека. За главну функцију је одређено да има целобројни тип повратка са два аргумента у свом параметру, нпр.г., аргц и аргв. Тада смо декларисали дескриптор датотеке фд и низ знакова типа „буф.”Након тога је дефинисана променљива типа структуре која се зове поллфд пфдс величине 2. Даље, проглашен је отворени системски позив да би се добила вредност из низа знакова и доделила дескриптору датотеке „фд“ као што се види на слици. Док је дескриптор датотеке „1“, структура „пфдс“ ће се ажурирати са неким подацима у њој користећи заставицу ПОЛЛИН у себи. Сада смо дефинисали функцију системског позива полл (). Први параметар системског позива полл () је структура уфдс која се користи у коду. Други параметар одређује укупан број поллфд структура у фдс серији.

И последњи параметар приказује вредност временског ограничења целокупног типа за системски позив анкете. Ако су пфдс откривени и додани са вредношћу 0, тада ће системски позив за читање очитати податке из међуспремника. Израз „ако“ ће се користити за проверу да ли је исказ за читање вратио вредност у цео број и записивање података. Ако се структура „пфдс“ налази на позицији „1“ током спречавања и уноса података, системски позив за читање ће користити податке из међуспремника док користи „фд“ дескриптор.

Сачувај ново.ц датотеку и затворите је. Сада га компајлирајте помоћу гцц компајлера.

$ гцц ново.ц

Током извршавања овог кода, додали смо податке у анкету за читање и он поново записује податке као у доњем излазу.

$ ./ а.напоље

Закључак:

У овом горе описаном чланку разговарали смо о системском позиву полл () на језику Ц. Надам се да ће вам ово упутство бити корисно и ефикасно током рада на Линук оперативном систему.

Како инсталирати и играти Доом на Линук-у
Увод у Доом Доом серија настала је 90-их година након објављивања оригиналног Доом-а. То је био тренутни хит и од тог времена надаље серија игара је д...
Вулкан за кориснике Линука
Са сваком новом генерацијом графичких картица видимо да програмери игара помичу границе графичке верности и долазе на корак од фотореализма. Али упрко...
ОпенТТД вс Симутранс
Стварање сопствене симулације превоза може бити забавно, опуштајуће и изузетно примамљиво. Због тога морате да испробате што више игара како бисте про...