Нет.

Нет.

Из интерфейса программирования Linux

В интерактивной оболочке эти три файловых дескриптора 0, 1 и 2 обычно относятся к терминалу, под которым запущена оболочка.

  1. Означает ли «терминал, на котором запущена оболочка» управляющий терминал сеанса, к которому принадлежит интерактивная оболочка?

    Если да, то что делать, если сеанс оболочки не имеет управляющего терминала?

  2. Когда оболочка создается из родительского процесса, будет ли оболочка автоматически создавать соединение между файловыми дескрипторами 0, 1 и 2 и терминалом в каждом из следующих случаев (наследование от родительского процесса оболочки):

    • если «терминал, под которым запущена оболочка» или управляющий терминал уже был открыт в файловом дескрипторе, который не равен 0, 1 и 2?

    • если файловые дескрипторы 0, 1 и 2 уже подключены к файлу, который не является «терминалом, под которым запущена оболочка» или управляющим терминалом?

  3. А что, если оболочка в цитате неинтерактивна?

Спасибо.

Кстати, просто предположим, что «shell» — это POSIX или bash.

СвязанныйКак можно отключить файловый дескриптор от любого файла?

решение1

Нет.

Это делается с помощью различных реализаций getty,open-controlling-tty, разветвленной частью pty-slave-side сервера SSH, разветвленной частью pty-slave-side эмулятора терминала с графическим интерфейсом или чем-то подобным.

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

И вы знали, что gettyэто так, потому что вы написали, что это так в "Когда начинается сеанс процесса, управляемый логином?", написанный одновременно с этим вопросом.

дальнейшее чтение

Связанный контент