Como canalizar uma saída de gato para stdin?

Como canalizar uma saída de gato para stdin?

C++ -------> g++ -------> bash:

#include <cstdlib>

using namespace std;

int main(){

    system("mail -s test_mail [email protected]");
    system("test msg");
    system(".");

    return 0;
 }

O primeiro comando do sistema funciona bem, mas é como se recebesse entrada de outro fluxo de entrada (não stdin). system("test msg") só é executado após i cntl+c sair do programa de email, só então o bash tenta interpretar "test msg".

Responder1

system()realmente apenas executa linhas de comando. Não é uma coisa parecida com um cachimbo.

A menor mudança possível para fazer seu programa de exemplo funcionar seria

int main()
{
    system("echo test msg | mail -s test_mail [email protected]");
    return 0;
}

porque então sua mensagem entrará na mailentrada padrão do programa por meio de um canal.

Mais prático seria você escrever sua mensagem em um arquivo temporário e então redirecionar mailo stdin desse arquivo

informação relacionada