LINUX.ORG.RU
решено ФорумAdmin

Bash file descriptors чё-т не понял


0

1

Each open file gets assigned a file descriptor. The file descriptors for stdin, stdout, and stderr are 0, 1, and 2, respectively. For opening additional files, there remain descriptors 3 to 9. It is sometimes useful to assign one of these additional file descriptors to stdin, stdout, or stderr as a temporary duplicate link. [3] This simplifies restoration to normal after complex redirection and reshuffling
http://tldp.org/LDP/abs/html/io-redirection.html

Мне абсолютно ясна концепци дескрипторов файлов, стдин, аут и эрр тоже. я не понял насчёт дескрипторов с 3 по 9. которые For opening additional files. растолкуйте плиз.

вот нашел скриптик
#!/bin/bash
# Redirecting stdin using 'exec'.


exec 6<&0 # Link file descriptor #6 with stdin.
# Saves stdin.
~~~~~~покусано~~~~~~

дескриптор 6 - это куда вообще?? тем более, что это начало скрипта. какой файл у нас получил дескриптор 6? ничего не понятно толком...одни догадки только.


Чего не понятного? В дескриптор 6 дупится дескриптор 0. Затем, видимо, на 0-м дескрипторе будет открыт другой поток, а работа со старым stdin будет идти через дескриптор 6. Надо по тексту скрипта дальше смотреть.

Там же английским по белому написано:

# Saves stdin.

geekless ★★
()

Для дополнительных потоков, написано же. Можно стандартный вывод в одном месте направить в [3-9], а где-нибудь дальше его оттуда получить, чтобы выделить из вывода других команд.

какой файл у нас получил дескриптор 6

6<&0 — это перенаправление fd0 aka STDIN в fd6.

Xenesz ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.