Итак, я пытаюсь написать программу переменного тока, которая считывает входные данные, переданные по каналу в программу (через stdin), но мне также нужно иметь возможность читать ввод с терминала (поэтому я, очевидно, не могу прочитать его из stdin) , Как бы я это сделал?
Я пытаюсь открыть другой дескриптор файла в / dev / tty следующим образом:
int see_more() {
char response;
int rd = open("/dev/tty", O_RDWR);
FILE* reader = fdopen(rd, "r");
while ((response = getc(reader)) != EOF) {
switch (response) {
case 'q':
return 0;
case ' ':
return 1;
case '\n':
return -1;
}
}
}
Но это приводит к ошибке сегментации.
Вот версия, которая работает. Спасибо всем за помощь:)
int see_more() {
char response;
while (read(2, &response, 1)) {
switch (response) {
case 'q':
return 0;
case ' ':
return 1;
case '\n':
return -1;
}
}
}