У меня есть программа x
, которую я хочу чисто завершить.Вы можете запустить его, просто выполнив ./x
и использовать терминал для прямой записи строк в stdin
и завершить его, написав exit
.
Однако, если вы используете: cat file.txt | ./x
, stdin
теперь передается из файла, и поэтому вы никогда не сможете набрать exit
.
Лучший способ завершить эту программу - автоматически завершить ее после прочтения последней строки из файла.
В качестве альтернативы, я бы хотел перенаправить stdin
обратно к терминалу, если это вообще возможно, чтобы дополнительно разрешить ручной ввод, как раньше.
Вот пример кода:
int main() {
// ...
while (ongoing) {
size_t n = 0;
char* ln = NULL;
getline(&ln, &n, stdin);
strtok(ln, "\n");
strtok(ln, "\r");
if (strcmp("exit", ln) == 0) {
break;
}
//...
}
}