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

ПОСИКС Спавн са Ц програмирањем

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

Зашто користити ПОСИКС Спавн?

Тхе посик_спавн () и посик_спавнп () функције се користе за стварање новог подређеног процеса. Подређени процес тада извршава датотеку. ПОСИКС је ове функције специфицирао да би стандардизовао метод креирања нових процеса за машине које немају подршку за системски позив виљушке. Ове машине су обично мале и немају уграђени систем за подршку ММУ.

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

Пример 1: посик_спавн ()

У овом примеру ћемо користити функцију спавн () да креирамо и извршимо нови подређени процес. Затим ћемо објаснити све релевантне аргументе који се користе у функцији.

Аргументи коришћени у примеру су следећи:

Расправа Опис
Користи се за дефинисање свих операција које се изводе.
пут Име путање која треба да се изврши.
фд_цоунт Број уноса са низом фд_мап. Ако је фд_цоунт једнак 0, тада се фд_мапа занемарује. У таквим случајевима, подређени процес наслеђује све дескрипторе датотека, занемарујући оне који су измењени.
фд_мап
Низ дескриптора датотека које ће наследити подређени процес. Овде, ако вредност фд_цоунт није 0, тада је фд_мап потребан да би се дескриптори датотеке фд_цоунт довели до врховне вредности ОПЕН_МАКС. Има:

· Унос детета у процес

· Излаз

· Вредности грешака

наследити Наслеђивање струцт показује да корисници желе да њихов подређени процес наследи све од родитеља.
аргв Показивач на одређени вектор аргумената. Вредност аргв [0] не може бити НУЛЛ и мора бити име датотеке која се учитава. Вредност аргв не може бити једнака НУЛЛ.
енвп Показује на низ показивача на знак. Сваки од показивача у овом низу указује на променљиву окружења. Крајња тачка низа је НУЛЛ показивач.

Пример 2: тест.ц

У следећем примеру се креира нови подређени процес за покретање наредбе од / бин / сх -ц. Ово је вредност предата као први аргумент. Тхе тест.ц код је следећи:

У горњем примеру позвали смо библиотеке, а затим мријести се.х заглавље. Видећете и посик_спавн () позван да креира дете процес у горњем примеру. Тхе мријести се и спавнп функције се користе уместо виљушка и екец функције. Спавн () има флексибилност и пружа много лакоће корисницима на много начина. Помало се разликује од систем () и екец (). Вратиће се и створити свеж дечји процес. У нашем примеру је пид. Изнад можете видети функцију чекања ваитпид (), онда систем () се користи. Приметите да спавн () и виљушка () процеси позивања су исти, а начин примене је мање-више исти за обе функције.

Сада ћемо извршити пример користећи гцц компајлер. Такође можете користити било који други компајлер по вашем избору:

$ судо гцц тест.ц -лрт

Затим покрените следеће:

$ ./ а.напоље

Излаз горње наредбе изгледаће на следећи начин:

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

Библиотека

Либц: Користите -л ц за повезивање гцц компајлер. Овде приметите да је ова библиотека аутоматски укључена.

Спавн ()

Тхе спавн () функција се заснива на ПОСИКС 1003.1д нацрт стандарда који се користи као посик_спавн (). Библиотека Ц укључује функције спавн * (). Овде ћемо навести неколико суфикса, заједно са њиховим описима:

е: користи се као низ за променљиве окружења.

л: користи се као НУЛЛ-завршена листа аргумената коришћених унутар програма.

п: користи се за дефинисање релативне путање. Ако путања нема косу црту у вредности, систем користи и претражује променљиву окружења ПАТХ за било који сличан програм.

в: делује као вектор аргумената унутар програма.

Мапирање дескриптора датотека

У спавн (), вежбамо фд_цоунт и фд_мап аргументи за позивање дескриптора датотеке. Одређује које дете треба наследити.

Број који се користи као опис датотеке за подређени процес зависи од његове локације унутар фд_мап. Овде ћемо размотрити пример родитеља са дескрипторима датотека вреднованим 1, 3 и 5, тада ће мапирање бити отприлике овако:

>> инт фд_мап = 1, 3, 5;
За дете За родитеља
0 1
1 3
2 5

Имајте на уму да ако користите експлицитно фд_мап да бисте подударали ове дескрипторе датотека са дететом и родитељем, тада морате мапирати СПВАН_ФДЦЛОСЕ функција за наставак.

Наследне заставе

У Спавн-у корисници морају да позове било коју од следећих заставица у случају наследства. Неки примери застава Спавн-а и њихови описи дати су у наставку:

Застава Опис
СПАВН_АЛИГН_ДЕФАУЛТ Ова заставица се користи за постављање подразумеваних поставки подешавања за поравнање.
СПАВН_АЛИГН_ФАУЛТ Ова заставица се користи за погрешно поравнање референци података.
СПАВН_АЛИГН_НОФАУЛТ Ова заставица се користи за поправљање неусклађености квара.
СПАВН_ДЕБУГ Ова застава се користи за отклањање грешака у језгру.
СПАВН_ЕКСЕЦ СПАВН се понаша као екец * () користећи ову заставу.
СПАВН_ЕКСПЛИЦИТ_ЦПУ Ова заставица се користи за постављање маске за покретање и наслеђивање члана маск = рун маске.
СПАВН_ЕКСПЛИЦИТ_СЦХЕД Ова застава се користи за постављање политике распореда.

Тхе <мријести се.х> дефинише ту маску СПАВН_АЛИГН_МАСК користи се за поравнавање горе наведених заставица.

пид_т пгроуп Подређена процесна група ако у члану заставе наведете СПАВН_СЕТГРОУП.
инт рунмаск Покретна маска подређеног процеса наслеђује маске договорене на основу вредности овог члана.
сигсет_т сигмаск Сигнална маска за подређени процес која се користи за одређивање статуса чланова заставе.
сигсет_т сигдефаулт Скуп подређених процеса задатих сигнала.

Грешке

Тхе посик_спавн () и посик_спавнп () функције такође могу отказати у неким случајевима, као што су следећи:

ЕИНВАЛ: То је случај када вредност идентификована помоћу филе_ацтионс или аттрп није тачан и адекватан.

Када основна вилица (2), вилица (2) или клон (2) не успе, тхе спавн () функције ће вратити број грешке.

ЕНОСИС: То је случај ако функција и њена подршка нису укључени или обезбеђени у систему.

Закључак

Овај водич је покривао основне функционалности које пружа ПОСИКС_спавн () и функције које користи за извршавање и извршавање својих функција. Такође смо покрили заставе и грешке које Спавн често користи.

Курсор скаче или се насумично помера док куцате у оперативном систему Виндовс 10
Ако откријете да курсор миша скаче или се сам помера, аутоматски, насумично док куцате на Виндовс преносном рачунару или рачунару, неки од ових предло...
Како да обрнете смер померања миша и додирних табли у оперативном систему Виндовс 10
Миш и Тоуцхпадрачунарство не само да олакшава рад, већ и ефикасније и мање времена. Не можемо замислити живот без ових уређаја, али ипак је чињеница д...
Како променити показивач миша и величину, боју и шему курсора на Виндовс 10
Показивач миша и курсор у оперативном систему Виндовс 10 су врло важни аспекти оперативног система. То се може рећи и за друге оперативне системе, так...