Я делаю пользовательскую оболочку в c, и я не совсем уверен, как работают процессы, работающие в фоновом режиме.
Я думал, что у меня довольно хороший захват, но я не уверен, чтопроисходит с файловым дескриптором 0, например.
Команда типа 'cat', когда передается без аргументов, ожидает ввода от stdin.
Если вы запускаете cat в фоновом режиме без аргументов (например, cat&), он будет немедленно прекращен.Почему это происходит на самом деле, был ли файл-дескриптор cat 0 закрыт каким-то образом?
Я попытался обработать это, установив для файлового дескриптора 0 значение / dev / null, но затем cat жалуется на наличие плохого файлового дескриптора.
Любая информация о том, как оболочка на самом деле обрабатывает stdin для фоновых процессов, будет очень полезна!
Обновление: установка fd 0 в / dev / null работает, но так ли это на самом деле делает оболочка?Устанавливает ли оболочка дескриптор файла 0 фонового процесса в / dev / null?Если это так, что делает оболочка, если вы переходите на передний план, устанавливает ли она значение 0?(кстати, я делаю это для первого процесса в трубе, если существует более одного процесса)