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

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

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

Системски позиви се користе у дистрибуцијама Линука да би се обезбедио улаз у Линук ОС и програме. Оперативни систем Линук користи Глибц библиотеку за подршку системским позивима у њему док користи језик Ц. Постоји и много више начина за коришћење системских позива. У овом водичу за чланке разговараћемо о отвореном системском позиву у Линук систему. Системски позив „Отвори“ кориштен је за брзо отварање датотеке наведене у путањи. Обавестио нас је о опису датотеке коју је креирао корисник. Користимо Убунту 20.04 да бисте добили практични системски „отворени“ позив.

Инсталирајте библиотеке

Језик Ц захтева да се као предуслови инсталирају неки додатни библиотечки пакети. Пре свега, морате инсталирати пакет манпагес-дев да бисте проверили информације у вези са системским позивима. Отворите терминал наредбеног ретка из подручја активности и извршите доленаведене инструкције за инсталирање страница.

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

Излаз за завршетак инсталације дат је у наставку.

Сада ћемо проверити отворени системски позив помоћу команде „ман“ као што је приказано доле.

$ ман 2 отворен

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

Горња синтакса приказује прва три реда неопходних библиотека које треба додати за системске позиве. Постоје три синтаксе доступне за отворени системски позив. Прва синтакса приказује „назив пута“, што је име датотеке коју треба отворити. Други параметар, „заставице“, приказује начин рада датотеке, нпр.г., читати или писати. Друга синтакса се може користити када датотека не постоји. Режим параметра користи се за приказ привилегија у датотеци.

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

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

Потребно је да додирнете „И“ да бисте наставили са инсталирањем ГЦЦ компајлера, у супротном притисните дугме „н“ да бисте затворили инсталацију. Притисните тастер „и“ и притисните Ентер да бисте наставили.

Излаз за завршетак приказан је испод.

Пример 01

Погледајмо врло једноставан пример „отвореног“ системског позива. Прво отворите командну љуску и креирајте нову „тест датотеку“.ткт “помоћу наредбе једноставног додира на следећи начин:

$ тест додира.ткт

Додајте му ручно неке податке. Можете видети податке у датотеци помоћу доње наредбе мачка.

$ мачји тест.ткт

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

$ нано ново.ц

Отвориће се доња ГНУ нано датотека. У њега морате да укуцате доњи код језика Ц. Видите да смо додали потребне библиотечке пакете да би се Ц код правилно извршио. Након тога, дефинисали смо главну функцију за рад на отвореном системском позиву. Прогласили смо две целобројне променљиве. Варијабла „н“ се користи за бројање вредности међуспремника, а „фд“ се користи за дескриптор датотеке. Прогласили смо низ знакова типа бафера као „буф“ величине 50. Отворени системски позив коришћен је за читање садржаја из датотеке „тест“.ткт “и вратите га у дескриптор датотеке. „О_РДОНЛИ“ је коришћен у сврхе читања. Следећи ред приказује системски позив за читање да се сакупи 10 бајтова из бафера и врати у цео број н. Такође, наредба врите је коришћена за уписивање података о садржају или међуспремнику у дескриптор датотеке, што је излазни екран. У нашем случају управо сада. Сачувајте ову датотеку помоћу Цтрл + С и затворите је помоћу команде Цтрл + Кс.

#инцлуде
#инцлуде
#инцлуде
#инцлуде
инт маин ()

инт н, фд;
цхар буф [50];
фд = отворен („тест.ткт ”, О_РДОНЛИ);
н = читање (фд, буф, 10);
врите (1, буф, 10);

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

$ гцц ново.ц

Сада је време да проверимо излаз за код Ц за отворени системски позив. Користимо доље а.оут команда у љусци. Излаз приказује 10 бајтова из садржаја „теста датотеке“.ткт ”.

$ ./ а.напоље

Узмимо још један пример за писање садржаја једне датотеке у другу помоћу отвореног системског позива. Да бисте креирали нову Ц датотеку помоћу нано наредбе као доле.

$ нано ново.ц

Дакле, узмите исти код са мањом променом у њему. Дефинисали смо још један опис датотеке у коду као „фд1“. Сва шифра је иста, осим једне додатне линије. Други последњи ред кода је користио отворени системски позив за креирање нове датотеке под називом „таргет“ користећи О_ЦРЕАТ и режим, само за писање као О_ВРОНЛИ. 0642 приказује привилегије додељене овој датотеци. И датотека је враћена у нови дескриптор датотеке. Следећи ред је приказао наредбу за писање бајтова садржаја у бафер према његовом опису датотеке. Сачувајте датотеку и затворите је.

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

$ гцц ново.ц

Да бисте приказали излаз Ц кода, испробајте а.упутства у љусци као што је доле. Нема резултата јер је излаз преусмерен на новонасталу датотеку „таргет“.

$ ./ а.напоље

Проверимо податке циља датотеке помоћу команде цат. Излаз показује да датотека садржи 20 бајтова.

$ мачка мета

Закључак

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

Најбоље игре за ручно праћење
Оцулус Куест је недавно представио сјајну идеју ручног праћења без контролера. Са све већим бројем игара и активности које извршавају подршку формално...
Како приказати ОСД прекривач у целом екрану Линук апликација и игара
Играње игара преко целог екрана или коришћење апликација у режиму целог екрана без ометања може вам одсећи релевантне системске информације видљиве на...
Топ 5 карата за хватање игара
Сви смо видели и волели стримовање играња на ИоуТубе-у. ПевДиеПие, Јакесептицие и Маркиплиер само су неки од најбољих играча који су зарадили милионе ...