У вас есть простая логическая ошибка: пока вы получаете out_fd_present на true , когда вы обнаруживаете > или >> , вы никогда не сбрасываете его на false (например, в верхней части цикла).
Хотя я предполагаю, что ваша «оболочка» - это игрушечная оболочка, я должен упомянуть, что у вас также есть много других проблем. Например, у вас утечка out_fd в родительском процессе и save_out (для чего это?) В дочернем процессе. У вас есть ошибка, при которой вы можете вызвать strcmp для строки NULL . И еще один для chdir . Ваш синтаксис и функциональность также отличаются от того, что «должна» делать оболочка (положение операторов перенаправления, umask, интервалы и токенизация и т. Д.). Не говоря уже о непоследовательном стиле (использовались и уродливый верблюжий футляр, и футляр для змеи). Чтобы реализовать оболочку, даже игрушечную, вам, вероятно, сначала следует начать с хорошего дизайна.
У меня есть x.tar файл в каталоге/a. После неопределения веса тары x.tar я получил следующий результат: cust/cust/01/cust/01/INFENG/cust/01/INFENG/scr/cust/01/INFENG/scr/test.scr cust/01/INFENG/SQL/cust/01/INFENG/...
Эти два подвергают сомнению, сводит меня с ума, и у меня нет хорошего экспертного знания ssh. (но я подозреваю, что это относится только к перенаправлению), вопросы, Вы хотите передать несколько строк входа от...
У меня есть папка с 77K PDF-файлами (~ 500 ГБ). Я хочу заархивировать их в 77 заархивированных файлов, каждый из которых содержит 1000 PDF-файлов, чтобы их было легче загружать и делиться ими с коллегами. Я не умею писать...
У меня есть последовательный терминал DEC VT101, подключённый к Raspberry Pi 3 под управлением Debian с помощью USB RS-232 нуль-модемного кабеля. Когда я выключаю терминал, я хотел бы, чтобы сессия оболочки завершилась, и когда я ...
Я знаю, что могу использовать ls-lat для обнаружения, сколько байтов имеет файл, и затем умножьтесь на 8 для обнаружения сколько битов. Но действительно ли это возможно только в одной командной строке?
Можно ли установить сценарий запускаться в конкретном каталоге, когда вы в него cd? Например, если / foo - это каталог с проектом git, возможно ли это, когда cd / foo автоматически запускает git status или ...