Закрытие stdout fd дает ошибку, а закрытие stderr fd — нет

Он не запускается на Fedora 30 из-за XDG_SESSION_TYPE=wayland.

Итак, меняем /usr/bin/gufwна:

c_user=$(whoami)
pkexec gufw-pkexec $c_user
xhost si:localuser:root

Также проверьте /usr/bin/gufw-pkexecправильное расположение " gufw.py"

Мой такой же:

LOCATIONS=(
"/usr/lib/python2.7/site-packages/gufw/gufw.py"
"/usr/lib/python2.7/dist-packages/gufw/gufw.py"
"/usr/share/gufw/gufw/gufw.py"
)

for ((i = 0; i < ${#LOCATIONS[@]}; i++))
do
    if [[ -e "${LOCATIONS[${i}]}" ]]; then
        python3.7 ${LOCATIONS[${i}]} $1
    fi
done
0
12.10.2021, 20:25
1 ответ

|&является сокращением для 2>&1 |(, как задокументировано). Стандартный вывод левой стороны -подключается к стороне записи канала перед выполнением других перенаправлений¹, но стандартная ошибка подключается в конце, независимо от стандартного вывода в данный момент. Это имеет значение, если стандартный вывод перенаправлен или, как в вашем примере, закрыт. С foo 1>&- |& bar, или с эквивалентным foo 1>&- 2>&1 | bar, или, если на то пошло, только с foo 1>&- 2>&1, в файловом дескрипторе 1 ничего нет во время применения перенаправления fd 2 к fd 1.

С помощью foo 1>&2 1>&- | barсначала стандартный выход fooподключается к стороне записи трубы, затем (, предполагая, что multiosвключен,)1>&2создает трубу к встроенному -тройнику. -подобный процесс, который будет записывать как в канал, созданный оператором |, так и в то, что находится в файловом дескрипторе 2 в момент времени (, который является терминалом ). Затем 1>&-закрывает стандартный вывод, поэтому, если fooкогда-либо попытается записать в стандартный вывод, эта запись завершится ошибкой. Не имеет значения, сколько мест процесс типа tee -записывает в :после 1>&-, он никак не может получить какой-либо ввод.

¹ Я не могу найти это указанное в документации,но это то, что традиционно делают оболочки, и это указано в POSIX . Если вы не уверены, вы можете проверить исходный код, трассировку системных вызовов или сделать вывод из результатов различных экспериментов с перенаправлением, таких как те, которые вы проводили.

2
12.10.2021, 22:32

Теги

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