Tenho um programa interativo que faz um loop até que a entrada seja '1'.
Ele pede a entrada do usuário e a imprime.
#include <iostream>
#include <string>
int main() {
std::string input;
while (true) {
std::cout << "Enter input (enter 1 to exit): ";
std::cin >> input;
if (input == "1") {
break;
}
std::cout << "You entered: " << input << std::endl;
}
return 0;
}
Funciona bem, desde que eu digite uma string e pressione Enter.
No entanto, quando abro outra janela de shell e faço echo em seu /proc/<pid>/fd/0
. Ele lê a entrada (posso ver como se eu tivesse digitado a entrada), mas não prossegue para a parte de saída.
Quando eu ecoo, tento entradas diferentes, todas mostram o mesmo comportamento:
echo 5 > /proc/pid/fd/0
echo hello > /proc/pid/fd/0
echo "hey\n" > /proc/pid/fd/0
echo 'hi\xA0' > /proc/pid/fd/0
Mesmo quando trago o terminal do programa como shell ativo, ele não faz nada.
Alguma ideia de como fazer o programa interativo se comportar como se eu tivesse digitado no próprio terminal?
Obrigado