Прочитать файл до стандарта для парсера

Я пытаюсь реализовать программу оболочки в среде Linux. Часть, с которой у меня возникают проблемы, - это чтение setup_file внутри оболочки перед запуском оболочки, чтобы делать такие вещи, как установка переменных среды.

В настоящее время оболочка имеет функцию parser_results = parse(), которая выполняет «getchar» и ждет, пока пользователь не введет что-то в стандартный ввод, а затем выполняет команду execute(parser_result), которая выполняет команду, используя вывод анализатора.

Что я хочу сделать, так это прочитать файл setup_file, в котором есть команды, заставить синтаксический анализатор прочитать их и предоставить мне нужные мне структуры данных. Затем я могу запустить execute.

Мой вопрос: как перенаправить содержимое файла на стандартный ввод? И как мне вызвать синтаксический анализатор для анализа этого перенаправленного ввода? Я играл с dup и dup2 безрезультатно.


person Kt Mack    schedule 17.10.2013    source источник
comment
Ваша программа ‹ Ваш файл установки   -  person WhozCraig    schedule 17.10.2013
comment
Джонатан, спасибо, я согласился с вашим предложением.   -  person Kt Mack    schedule 17.10.2013


Ответы (1)


Короткий ответ (на вопрос «как перенаправить содержимое файла на стандартный ввод»): «Вы этого не делаете».

Вы пересматриваете свою функцию ввода, чтобы читать из заданного файлового потока вместо stdin, а затем для чтения из файла вы открываете его и передаете этот указатель файла вашему коду синтаксического анализа (и закрываетесь, когда код синтаксического анализа выполнен), а затем, когда вы готовы к пользовательскому вводу, вы вызываете код синтаксического анализа с stdin вместо файла. Это избавляет от возни с stdin.

person Jonathan Leffler    schedule 17.10.2013