Как отменить перенаправление терминала в коде?

#c #operating-system #programming-languages

#c #операционная система #программирование-языки

Вопрос:

Я пытался узнать, как отменить перенаправление, но не смог. Если я введу ./program < input.txt чтобы перенаправить stdin, есть ли способ заставить stdin считываться с клавиатуры в программном коде C после прочтения всех строк input.txt ?

Комментарии:

1. В этом сообщении могут быть полезны некоторые дополнительные сведения, такие как операционная система, язык и т. Д., И рассмотрите возможность использования тегов для улучшения качества вопроса

2. На Windows VC это просто, потому что вы можете использовать getch() и cscanf() для консольного ввода, и cprintf() и cputs() для консольного вывода. Что-нибудь еще может быть с обычными stdin и stdout функциями, которые могут быть перенаправлены. Это особенно полезно, если вывод медленной программы перенаправляется в файл, в то время как сигналы прогресса видны на консоли.

3. @WeatherVane: Однако, используя getch и cscanf не перенаправлять stdin , как запрашивает вопрос. Например, если программа хочет вызвать код, который считывается с stdin терминала, и прочитать его с терминала, тот факт, что getch считывается с консоли, будет недостаточным. Возможно, решение будет включать закрытие stdin и явное открытие /dev/tty в Unix или аналогичную вещь в Windows. ( CON: ?)

4. Открытие dev/tty означает freopen(«/dev / tty», «r», stdin)?