
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 mail
entrada 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 mail
o stdin desse arquivo