Замена процесса в сравнении с FIFO (созданным `makefifo`)

Запустите xterm, выполняющий ваш скрипт, вместо того, чтобы просто запускать ваш скрипт, и добавьте команду read , например, чтобы остановить вывод и иметь возможность читать.

gnome-terminal -x your_script

0
26.03.2018, 05:33
1 ответ

Подстановка процессов не обязательно связана с именованными каналами; его можно реализовать с помощью /dev/fdна платформах, которые это поддерживают.

По крайней мере, с Bash в Linux подстановка процессов выполняется значительно быстрее, чем FIFO. Основываясь на различиях в производительности между конвейерами и заменой процессов , я использовал следующий скрипт для тестирования FIFO:

mkfifo fifo
for i in {1..10000}; do
    echo foo bar > fifo &
    while read; do
    echo $REPLY > /dev/null
    done < fifo
done
rm fifo

и в итоге получили время, аналогичное времени, указанному для труб в связанном вопросе.

С Zsh разница в производительности не так значительна, но все же присутствует (примерно на 10% в пользу замены процесса ).

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

2
28.01.2020, 02:32

Теги

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