diff
aceita nomes de arquivos como argumentos - você passou os dados do stdout do comando. Se você estiver usando o bash, zsh ou outro shell similar, você pode usar o processo de substituição:
diff <(./program < inputfile) outputfile
Ou, POSIXly (você também pode usar um pipe nomeado, mas provavelmente é um exagero):
./program < inputfile > /tmp/program-out
diff /tmp/program-out outputfile
rm /tmp/program-out