Quando você quiser que o programa a.out leia a saída do comando echo 0 como sua entrada, você pode fazer assim:
echo 0 | ./a.out
Ou (isso é bash specific):
./a.out < <(echo 0)
Este > e este < são operadores de redirecionamento, > é o redirecionamento da saída e < da entrada.
Isto:
echo 0 > input.txt
Redireciona a saída de echo para um arquivo chamado input.txt
Isto:
./a.out < input.txt
Redireciona a entrada de ./a.out ; a fonte é o conteúdo de input.txt .
Para vários comandos, use comandos compostos :
{ echo 0; cat test.txt; } | ./a.out