1

Что такое дескриптор файла 10?

Реальный пример (где стандартный вывод игнорируется, стандартная ошибка перенаправляется на стандартный вывод, а данные из файлового дескриптора 10 перенаправляются на стандартный вывод), для которого я потерял документацию / контекст для:

./cluexec21nodes 'mkdir /home/mortense/sambapub;cd /home/mortense/sambapub;./runcola.sh >/dev/null 2>&1 10>&1 &'

Стандартные файловые дескрипторы

0   Standard Input (stdin)
1   Standard Output (stdout)
2   Standard Error (stderr)

но что такое дескриптор файла 10?

Это использовалось в системе Linux (возможно, Red Hat).

3 ответа3

3

Помимо стандартных файловых дескрипторов есть 3-1024. Они могут быть созданы в сценариях с

exec 10<> afilename

С этого момента все, что записывается в файловый дескриптор 10, записывается в afilename

Когда у тебя есть

./script.sh 10>&1 

Вы перенаправляете все, что пошло бы в файловый дескриптор 10, в стандартный вывод.

Вы захотите просмотреть скрипт runcola.sh чтобы понять, почему он это делает.

0

Дескриптор 10 используется для комментариев.

В Wikipedia есть хорошая стартовая статья в File descriptor. Сказать, что синтаксис sh "перенаправляет" один дескриптор в другой, немного обманчиво. Надежные источники информации можно найти в разделе "Дизайн операционной системы UNIX". Документация по системным вызовам dup(2) и dup2(2) показывает хорошую сделку.

Гравити, Пол и другие (вы знаете, кто вы есть) могут также знать о некоторых дополнительных ресурсах. Ребята?

0

Файловые дескрипторы не исправлены; программа может использовать их по своему усмотрению. (Даже fd's 0-2 можно закрыть, открыть, использовать повторно.)

В этом случае, fd 10, кажется, выбран произвольно; это может быть так ./runcola.sh ожидает, что сможет написать некоторую дополнительную информацию. Вы должны будете прочитать сам сценарий, чтобы знать наверняка.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .