Оқулық «Федералдық білім беруді дамыту институты»



Pdf көрінісі
бет85/220
Дата25.02.2022
өлшемі2,22 Mb.
#26438
түріОқулық
1   ...   81   82   83   84   85   86   87   88   ...   220
81
 
 
 
PID = 1
 
Бағдарламаның  келтірілген  мысалында  келесі  іске  назар  аудару 
қажет:  егер  case  сәйкес  нұсқа  ішінде  топ-процесінен  шығуды 
қамтамасыз  етпесе,  онда    топ  case  ішінде  бағдарламалық  кодты 
орындауды  аяқтап  болған  соң,  switch()  құрылысының  жабылатын 
жақшасынан  кейін  орналасқан  кодты  орындауды  жалғастырады.  Көп 
жағдайда бұндай әрекеттің алдын алу керек. Берілген қайтару кодымен 
процестен  нақты  шығу  үшін  _exit(<қайтару  коды>)  атқарымы 
қолданылады.  Бұл  атқарым  шақырту  процесін  жойып,  келесі 
әрекеттердің орындалуына алып келеді: 
 
■ 
жеткізілуді күтіп отырған барлық сигналдар өшеді (10.3-бөлімін 
қараңыз);
 
■ 
барлық ашық файлдар жабылады;
 
■ 
ресурстарды пайдалану статистикасы proc файлдық жүйеде 
сақталады;
 
■ 
аталық-процес  хабарлайды және топтардағы  PPID орын 
ауыстырылып қойылады;
 
■ 
процес күйі «зомби» ауысады (4.3-бөлімін қараңыз). Процес 
жұмысын аяқтаудың басқа тәсілдері басқа бөлімдерде қарастырылатын 
болады.
 
процес-топты  аяқтау  үшін  exit()  атқарымының  орнына  _exit()  
қолдану  керек.  Ал,  _exit()  атқарымы  процеске  қатысты  ядро 
құрылымын  —  дескриптор  мен    процес  контексті  тазартады.  Одан 
ерекше 
exit() 
атқарымы 
көрсетілген 
әрекеттерге 
қосымша 
пайдаланушы  деректерінің  барлық  құрылымын  бастапқы  күйге  қайта 
әкеледі.  Мұның  нәтижесінде  аналық-процестің  құрылымына  зақым 
келетін  жағдай  туындауы  ықтимал.  Еxit  ()  қызметі  тек  аналық-
процеспен орындалатын  атқарымдарда пайдаланылады. 
 
Көп  жағдайда  fork()  атқарымы  exec...()  тобының  атқарымдарының 
бірімен  бірге  қолданылады.  Бұл  атқарымдарды  бірге  қолдану  кезінде 
жаңа процесті жүргізу және одан жаңа бағдарламаны жіберу мүмкіндігі 
бар.
 
Еxec...()  атқарымын  орындау  нәтижесінде  бағдарламалық  код  пен 
процестердің 
деректері 
жіберіліп 
жатқан 
бағдарламаның 
бағдарламалық  кодына  ауысады.  Өзгеріссіз  қалатын  тек  процес 
идентификаторы PID мен PPID аналық процес идентификаторы.
 
Егер exec...() тобының атқарымының орындалуы сәтсіз аяқталса, ол 
мынадай себептерден болуы ықтимал:
 
1. Орындалатын 
файлға  апаратын  жол  жүйелік  параметр 
PATH_MAX  мәнінен  асып  түседі,  файлға  дейінгі  жолдың  элементі 
NAME_MAX  жүйелік  параметр  мәнінен  асып  түседі  немесе  файл 
атауының  рұқсаты  кезінде  жолдағы  символдық  сілтемелер  саны 


 


Достарыңызбен бөлісу:
1   ...   81   82   83   84   85   86   87   88   ...   220




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет