Два канала к одной команде

Я собираюсь взять предположение на этом, но я довольно уверен.

Я держал пари, что существует a PermitRootLogin yes строка уже в Вашем файле. SSH будет только использовать первую строку, которую она находит и проигнорирует дубликат далее вниз. Таким образом, если Вы просто добавили PermitRootLogin no в конец файла, не удаляя строку выше, не будет никакого эффекта.

9
08.02.2012, 16:21
1 ответ

Каналы просто связываются с различными дескрипторами файлов, чем 0 (stdin):

$ echo <(true)
/dev/fd/63
$ echo <(true) <(true)
/dev/fd/63 /dev/fd/62

Процесс может, конечно, иметь больше чем один открытый дескриптор файла за один раз, таким образом, нет никакой проблемы.

13
27.01.2020, 20:06
  • 1
    Если бы я только знал его названные временные каналы, то я смог бы погуглить его.Спасибо! –   08.02.2012, 16:24
  • 2
    @iblue: Я не думаю, что это называют "временными каналами". Это - просто каналы, как создано pipe() системный вызов. –  Sven Marnach 08.02.2012, 16:26
  • 3
    Чтобы быть очень точным, это можно было бы назвать "анонимными именованными каналами", но достаточно погуглить его. –   08.02.2012, 16:29
  • 4
    @WilliamPursell: нет никаких включенных файлов. Оболочка создает использование неименованного канала pipe() и затем разветвляет подпроцессы. Основной процесс действительно имеет дополнительные дескрипторы файлов открытыми, если неименованный канал используется. Эти дополнительные дескрипторы файлов передаются в форме /dev/fd/..., и процесс будет обычно просто открывать их использующий эти имена файлов. Это приведет к ним быть dup()редактор, создавая еще более открытые дескрипторы файлов. Процесс мог также использовать именованный дескриптор файла сразу же без любых прослушиваний... –  Sven Marnach 08.02.2012, 23:46
  • 5
    ..., как продемонстрировано в этой маленькой и глупой тестовой программе. После компиляции в a, Я назвал его как ./a <(ls), и это успешно распечатало список файлов, доказав, что именованный дескриптор файла (63 в моем случае) был уже открыт. Удар мог бы использовать именованные каналы во временном каталоге на различной архитектуре, чем Linux, в этом случае никакие дополнительные дескрипторы файлов не будут открыты при вводе основного процесса. –  Sven Marnach 08.02.2012, 23:49

Теги

Похожие вопросы