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);
|