stdin, stdout и stderr совместно используются?

Я пытаюсь понять поведение трех потоков -stdout, stdin а такжеstderr, Я не мог получить ответ из любого учебника, поэтому я пришел сюда.

Я знаю, что эти три хранятся в таблице дескрипторов файлов с файловыми дескрипторами 0 (stdin), 1 (stdout) и 2 (stderr). Мне также известно, что это не просто файловые дескрипторы, а потоки ввода / вывода, которые могут быть перенаправлены. Хорошо, а как насчет обмена?

Рассмотрим три случая:

Когда вызывается fork () : Дочерний процесс и родительский процесс совместно используют файловые дескрипторы, но имеют ли они одинаковые stdin, stdout и stderr?Когда поток создан : Потоки совместно используют файловые дескрипторы, но потоки ввода / вывода?Когда вызывается execl () В этом случае текущий образ процесса перезаписывается новым образом процесса. Если я сделаюexecl("./a.out", "a.out", NULL); тогда получит ли этот новый исполняемый файл свежую копию stdin, stderr и stdout?

Все мудрые ответы приветствуются.

Ответы на вопрос(2)

Ваш ответ на вопрос