В Unix та Unix-подібних операційних системах файловий дескриптор — це невід’ємне ціле число (ідентифікатор), закріплене за певним потоком вводу-виводу. При створенні нового потоку вводу-виводу (що може бути пов’язаний як з , так і з іншими ресурсами вводу-виводу, наприклад каталогами, сокетами чи FIFO) ядро повертає його файловий дескриптор процесові, яким потік був створений. Файловий дескриптор може використовуватися для отримання доступу до потоку.

За замовчуванням, Unix-оболонки повязують файловий дескриптор 0 з потоком стандартного вводу (клавіатура), файловий дескриптор 1 ― з потоком стандартного виводу (термінал), і файловий дескриптор 2 ― зі стандартним виводом помилок (діагностичні та відлагоджувальні повідомлення, інформація про помилки). Ця домовленість дотримується багатьма Unix-оболонками та багатьма застосунками, але не є складовою частиною ядра. Стандарт POSIX.1 замінив «магічні числа» 0, 1, 2 на символічні константи STDIN_FILENO, STDOUT_FILENO та STDERR_FILENO відповідно. Таким чином, у кожного процеса Unix (окрім демонів) має бути три стандартних файлових дескриптори POSIX, що відповідають трьом стандартним потокам:

Ціле значенняName<unistd.h> символічна константа<stdio.h> файловий потік0Стандартний ввідSTDIN_FILENOstdin1Стандартний вивідSTDOUT_FILENOstdout2Стандартний вивід помилокSTDERR_FILENOstderr Файлові дескриптори можуть набувати значень від 0 до OPEN_MAX. Згідно POSIX.1, значення OPEN_MAX дорівнює 19. В реальних ОС це значення може бути більше. На сьогоднішній день в Linux OPEN_MAX вважається застарілим.

Примітки