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

How Use Open System Call C



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

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

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







$ судо апт инсталирајте странице-дев



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







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

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



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

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

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

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

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

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

Пример 01

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

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

Ручно му додајте неке податке. Податке у датотеци можете видети помоћу наредбе цат испод.

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

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

$нанонев.ц

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

#инцлуде
#инцлуде
#инцлуде
#инцлуде

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

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

$гццнев.ц

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

$./до.оут

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

$ нано нов.ц

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

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

$ гцц нов.ц

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

$./до.оут

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

$ цат цат таргет

Закључак

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