Кіріспе

C бағдарламалау тіліндегі енгізу/шығару мүмкіндігі C бағдарламалау тілі файлдарды енгізу және шығару үшін көптеген стандартты кітапхана функцияларын ұсынады. Бұл функциялар C стандартты кітапханасының негізгі бөлігін құрайды. Бұл мүмкіндік 1970 жылдардың басында Майк Леск Bell Labs-те жазған "тасымалдамалы I/O жиынтығынан" (portable I/O package) бастау алды және ресми түрде Unix операциялық жүйесінің 7-ші нұсқасында бөлігі болды. C-нің I/O мүмкіндігі қазіргі стандарттармен салыстырғанда төмен деңгейлі болып табылады; C барлық файл операцияларын байттар ағынындағы операцияларға абстракциялайды, олар "енгізу ағындары" немесе "шығару ағындары" бола алады. Кейбір ертерек бағдарламалау тілдерінен өзгеше, C кездейсоқ қолжетімді дерек файлдарын тікелей қолдамайды; файлдың ортасындағы жазбадан оқу үшін бағдарламашы ағын құрып, файлдың ортасына іздеуі керек, содан кейін ағыннан байттарды тізбекпен оқуы тиіс. Файл I/O ағыны моделі Unix арқылы кеңінен танымал болды, ол C бағдарламалау тілімен бірге әзірленді. Көптеген қазіргі операциялық жүйелер Unix-тен ағындарды мұра етті, ал C бағдарламалау тілдері отбасындағы көптеген тілдер C-нің файл I/O интерфейсін аз өзгерістермен (мысалы, PHP) мұра етті.

Шолу

Бұл кітапхана физикалық құрылғылармен, мысалы пернетақталармен, принтерлермен, терминалдармен немесе жүйе қолдайтын кез келген файл түрлерімен жұмыс істеу үшін "ағындар" деп аталатын құралды пайдаланады. Ағындар – бұл олармен біркелкі әрекеттесуді қамтамасыз ететін абстракция. Барлық ағындардың, олармен байланысты физикалық құрылғылардың ерекшеліктеріне қарамастан, ұқсас қасиеттері болады.

Ұзартулар

POSIX стандарты өзінің негізгі анықтамаларында бірнеше кеңейтулерді анықтайды, олардың ішінде жадты бөлуге арналған функция, нысандар мен файл дескрипторлары арасындағы байланысты орнататын функциялар және жадтағы буферлерге сілтеме жасайтын нысандарды құруға арналған функциялар тобы бар.

Студияға балама

Бірнеше балама әзірленді. Олардың ішінде ISO C++ стандартының бөлігі болып табылатын C++ кітапханасы бар. ISO C++ әлі де осы функционалдылықты талап етеді. Басқа баламалардың ішінде AT&T Bell Laboratories-тің Sfio (A Safe/Fast I/O Library) кітапханасы бар. Бұл кітапхана 1991 жылы ұсынылып, ағындарды жобалаудағы жүйесіздіктерді, қауіпсіз емес тәжірибелерді және тиімсіздіктерді болдырмау мақсатын қойды. Оның мүмкіндіктерінің бірі – ағыннан оқылатын немесе оған жазылатын деректерді өңдеуді өзгерту үшін кері шақыру функцияларын ағынға қосу мүмкіндігі. Ол 1997 жылы жарияланды, ал соңғы нұсқасы 2005 жылдың 1 ақпанында шықты.