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



Pdf көрінісі
бет62/158
Дата01.07.2023
өлшемі3.83 Mb.
#475485
түріОқулық
1   ...   58   59   60   61   62   63   64   65   ...   158
операциялық жуйелер

88 
 
фрагменттерін экранға шығару тізбегі буферлерді экранға тастау 
тізбегімен анықталады.
Сурет-4.2. Параллель орындалатын процестердің қосу/шығару 
буферлерін тастау
Бұл мәселенің алдын алу үшін буферлеуді сөндіріп тастауға 
болады. Бұл деректерді шығару командасын орындау мен терминалда 
мәтіннің нақты шығуы арасында кешігуді минимизациялайды. 
Буферлеуді басқару setvbuf() атқарымы арқылы жүргізіледі: 
#include 
int setvbuf (FILE *stream, char *buf, int type, 
size_t size);
Аргумент stream буферлеу режимі өзгеретін қосу/шығару 
ағынының атауын береді; buf буфер сақталатын жады аймағына 
нұсқарды белгілейді; type буферлеу түрін анықтайды және келесідей 
мәндерді қабылдай алады:
■ 
_IOFBF — толық буферлеу;
■ 
_IOLBF — жолма-жол буферлеу;
■ 
_IONBF — буферлеудің болмауы.
Size аргументі buf нұсқасы сілтенетін буфер өлшемін береді.
Шығарудың стандартты ағынына буферлеуді өшіріп тастау үшін 
нольдік өлшемге ие буферді пайдаланып және төмендегідей setvbuf() 
атқарымын шақыруға болады: 
setvbuf(stdout,(char*)NULL,_IONBF,0);
Бұл атқарымды деректерді бір терминалға шығаратын процестерді 
туындататын кез-келген бағдарламаның жұмысы басталған кезде 
шақыруға кеңес беріледі. 
Бұдан басқа дәл setvbuf() атқарымы секілді, осы атқарым секілді 
қызмет ететін setbuf() атқарымы бар, ол қажет болса буферлеу типін 
өзгертпестен буферді сөндіріп тастайды немесе жаңа буферді жасай 
алады. Бұл атқарымның интерфейсі келесідей: 
#include 
void setbuf(FILE *stream, char *buf);
Сәйкесінше буферлеуді келесі команда арқылы сөндіріп тастауға 
болады: 
setbuf(stdout,(char*)NULL);
 
 


89
 
 


Достарыңызбен бөлісу:
1   ...   58   59   60   61   62   63   64   65   ...   158




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

    Басты бет