Перенаправление на `stdin `:who потом выводит содержимое?

попробуй так:

dpkg --add-architecture i386

apt-get update

apt-get install multiarch-support

apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386

Если вашему приложению требуется больше библиотек, установите все с :i386 в имени библиотеки.

Веб-сайт пакетов Ubuntu может помочь вам найти пакеты, предоставляющие файлы, которые в конечном итоге отсутствуют.

1
31.01.2021, 23:05
1 ответ

stdinиз echoподключены к терминалу, поэтому вывод идет туда, когда вы выполняете echo 'test' >&0. Обычно echoне использует свой стандартный ввод, но он есть, так же, как, например, для. cat. С другой стороны, если вы запустите echo foo | echo test >&0, вы получите ошибку «Bad file descriptor», так как канал, подключенный к стандартному вводу второго echo, читается -только для него.

В другом вашем фрагменте, с stdbuf, я думаю, что происходит гонка между wcзамечающими, что канал в его stdinзакрыт (вы перенаправляете сторону записи, так что нет -одна запись в канал )и echoзапись в терминал. Дело не в буферизации (, которая на самом деле не должна иметь значения, поскольку echoвсе равно должна сбрасывать буфер при завершении ), вы можете получить то же самое с strace echo...или env echo.... Все, что в левой части замедляет запуск echo, должно иметь эффект. Кроме того, помните, что только с echo | wcвы, скорее всего, запустите встроенную оболочку -в реализации echo, а с stdbuf, envили straceзапустится внешний echo. Встроенные быстрее.

В общем, если у вас есть два процесса, записывающих что-то одновременно, вы не можете делать никаких предположений о порядке записи, если только они явно не синхронизируются.

3
18.03.2021, 22:33

Теги

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