перенаправлення вводу

З кожним відкритим файлом пов'язаний дескриптор файлу. [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