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



Pdf көрінісі
бет83/220
Дата25.02.2022
өлшемі2,22 Mb.
#26438
түріОқулық
1   ...   79   80   81   82   83   84   85   86   ...   220
79
 
 
 
Осыған қарамастан процес келесідей қасиеттерді аталық процестен 
иемденеді: 
 
■ 
бағдарламаның командалық жолақтарының аргументтері;
 
■ 
ауысымдық орта;
 
■ 
процесті іске қосқан пайдаланушылардың (UID) нақты және тиімді 
(EUID) идентификаторлары;
 
■ 
процесті  іске  қосқан  топтардың  шын  (GID)  және  тиімді  (EGID) 
идентификаторлары;
 
■ 
артықшылық;
 
■ 
сигналдарды өңдеу құрылғылары (10.3.5-бөлімін қараңыз).
 
Егер процес-буынын жасау сәтсіздікке ұшыраса fork() қызметі -1 мәнін 
қайтарады. Оның себебі келесі жағдайлардың бірі болуы ықтимал:
 
■ 
ағымдағы пайдаланушы үшін процестердің максимал санының асып 
кетуі.  Мысалы  BASH  қабатын  қолданған  кезде  ағымдағы 
шектеулерді  ulimit  -u  команданың  көмегімен  білуге  немесе 
өзгертуге болады;
 
■ 
рұқсат  етілген  еншілес  процестер  санының  толып  кетуін  getconf 
CHILD_MAX  команданы  арқылы  еншілес  процестердің  максимал 
санының шектеуін білуге болады;
 
■ 
жүйеде  процестердің  максимал  санының  асып  кетуі.  Бұл  шектеуді 
жүйе  өзі  қояды  және  оны  sysctl  fs.file-max  команданың  көмегімен 
немесе /proc/sys/fs/file-max файлын қарау арқылы білуге болады. 
 
■ 
оперативті  жады  мен  тарту  бөлімінің  көлемімен  анықталатын 
виртуал жады сарқылған.
 
Fork  ()  атқарымы  сәтті  орындалған  жағдайда  процес-буынның  PID 
аталық  процеске  және  0  тегі-процеске  қайтарады.  Процестер 
идентификаторларын сақтау  үшін  pid_t  айналмалы  түрі  қолданылады. 
Көп  жүйелерде  бұл  түрі  int  типіне  ұқсас,  дегенмен  int    типін  қолдану 
UNIX 
болашақ 
нұсқаларымен 
ұқсастықты 
қамтамасыз 
ету 
ұсынылмайды. 
 
PID  және  PPID  мәндерін  алу  үшін  сәйкесінше  getpid()  және 
getppid()  атқарымлары  қолданылады.  Олар  қайтаратын  мәннің  типі— 
pid_t:
 
#include 
 
#include 
 
pid_t getpid(void); 
pid_t getppid(void);
 
fork() атқарымы шақыртылғаннан кейін екі процестің орындалуы да 
—  аталық  және  топтар    олардан  кейін  еретін  командалар  арқылы 
жалғасады, әр процес орындайтын бағдарламалық кодты шектеу қажет.   
Ол  үшін  ең  айқын  тәсіл  —  fork()  қызметін  қайтаратын  тексеруші 
кодтың  қажет  бөліктерін  әр  түрлі  шарт  тармақтарында  орындау. 


 


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




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

    Басты бет