Кіріспе
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) мұра етті.
The C programming language provides many standard library functions for file input and output. These functions make up the bulk of the C standard library header The functionality descends from a "portable I/O package" written by Mike Lesk at Bell Labs in the early 1970s, and officially became part of the Unix operating system in Version 7. The I/O functionality of C is fairly low level by modern standards; C abstracts all file operations into operations on streams of bytes, which may be "input streams" or "output streams". Unlike some earlier programming languages, C has no direct support for random access data files; to read from a record in the middle of a file, the programmer must create a stream, seek to the middle of the file, and then read bytes in sequence from the stream. The stream model of file I/O was popularized by Unix, which was developed concurrently with the C programming language itself. The vast majority of modern operating systems have inherited streams from Unix, and many languages in the C programming language family have inherited C's file I/O interface with few if any changes (for example, PHP).
Шолу
Бұл кітапхана физикалық құрылғылармен, мысалы пернетақталармен, принтерлермен, терминалдармен немесе жүйе қолдайтын кез келген файл түрлерімен жұмыс істеу үшін "ағындар" деп аталатын құралды пайдаланады. Ағындар – бұл олармен біркелкі әрекеттесуді қамтамасыз ететін абстракция. Барлық ағындардың, олармен байланысты физикалық құрылғылардың ерекшеліктеріне қарамастан, ұқсас қасиеттері болады.
Ұзартулар
POSIX стандарты өзінің негізгі анықтамаларында бірнеше кеңейтулерді анықтайды, олардың ішінде жадты бөлуге арналған функция, нысандар мен файл дескрипторлары арасындағы байланысты орнататын функциялар және жадтағы буферлерге сілтеме жасайтын нысандарды құруға арналған функциялар тобы бар.
Студияға балама
Бірнеше балама әзірленді. Олардың ішінде ISO C++ стандартының бөлігі болып табылатын C++ кітапханасы бар. ISO C++ әлі де осы функционалдылықты талап етеді. Басқа баламалардың ішінде AT&T Bell Laboratories-тің Sfio (A Safe/Fast I/O Library) кітапханасы бар. Бұл кітапхана 1991 жылы ұсынылып, ағындарды жобалаудағы жүйесіздіктерді, қауіпсіз емес тәжірибелерді және тиімсіздіктерді болдырмау мақсатын қойды. Оның мүмкіндіктерінің бірі – ағыннан оқылатын немесе оған жазылатын деректерді өңдеуді өзгерту үшін кері шақыру функцияларын ағынға қосу мүмкіндігі. Ол 1997 жылы жарияланды, ал соңғы нұсқасы 2005 жылдың 1 ақпанында шықты.