перенаправлення вводу
З кожним відкритим файлом пов'язаний дескриптор файлу. [1] Дескриптори файлів stdin. stdout і stderr - 0, 1 і 2, відповідно. При відкритті додаткових файлів, дескриптори з 3 по 9 залишаються незайнятими. Іноді додаткові дескриптори можуть послужити непогану службу, тимчасово зберігаючи в собі посилання на stdin. stdout або stderr. [2] Це спрощує повернення дескрипторів в нормальний стан після складних маніпуляцій з перенаправленням і перестановками (див. Приклад 16-1).
Операції перенаправлення і / або конвеєри можуть комбінуватися в одній командному рядку.
Допускається перенаправлення декількох потоків в один файл.
Закриття дескрипторів файлів
Закрити дескриптор вхідного файлу n.
Закрити дескриптор вихідного файлу n.
Дочірні процеси успадковують дескриптори відкритих файлів. З цієї причини і працюють конвеєри. Щоб запобігти спадкування дескрипторів - закрийте їх перед запуском дочірнього процесу.
Додаткові відомості про перенаправлення вводу / виводу ви знайдете в Додаток D.
Приклад 16-1. Перенаправлення stdin за допомогою exec
Аналогічно, конструкція exec> filename перенаправляє висновок на stdout в заданий файл. Після цього, весь висновок від команд, який зазвичай направляється на stdout. тепер виводиться в цей файл.
Приклад 16-2. Перенаправлення stdout за допомогою exec
Приклад 16-3. Одночасне перенаправлення пристроїв, stdin і stdout. за допомогою команди exec