Поведение stdin/stdout в сочетании с подоболочками и командой CD

Многие корпоративное программное обеспечение VPN настроены для предоставления доступа только к корпоративной сети. Это происходит из-за соображений безопасности так, чтобы клиенты не могли бы передать трафик в корпоративную сеть.

Вы знаете, какое программное обеспечение VPN Вы используете? Если это - OpenSource, можно propably настроить настройки. Иначе необходимо связаться с корпоративным.

7
17.08.2012, 15:44
2 ответа

Канал настраивает stdout для движения от ls к подоболочке.

В подоболочке, cd /tmp и cat сделаны в том же процессе.

cd /tmp не читает из stdin (канал), итак, когда cat чтения от stdin, это получает весь из lsвывод.

7
27.01.2020, 20:17
  • 1
    , это достаточный, чтобы первая команда не имела никакого процесса? Что относительно ls | ( /bin/echo hi; /bin/cat ) который работает echo и cat как разделяют процессы, но cat все еще чтения stdin от ls вместо /bin/echo? –  mrb 17.08.2012, 16:31
  • 2
    , Если первая команда не является встроенным, оболочка, должен будет сделать дополнительное ветвление. Но это не имеет значения, потому что дети наследовали дескрипторы файлов своих родителей. –  Mikel 17.08.2012, 16:35
  • 3
    Спасибо! Для разработки ответ еще больше: Я проверил определение CD в Станд. IEEE 1003.1-2008. В разделах "STDIN" и "STDOUT" это говорит, что оба потока (почти всегда) не используются CD. –  Abdull 17.08.2012, 16:42

cd не глотает вывод, потому что он не хочет. Рассмотрите это:

{ ls; date; } | (cd /tmp && date >> date.txt && cat date.txt && cat >dumpfile)

Только последнее cat >dumpfile сохранит stdin прибытие из канала, потому что ни одна из других команд не хочет использовать его.

3
27.01.2020, 20:17

Теги

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