
C++ -------> g++ -------> bash :
#include <cstdlib>
using namespace std;
int main(){
system("mail -s test_mail [email protected]");
system("test msg");
system(".");
return 0;
}
El primer comando del sistema funciona bien, pero luego es como si tomara información de otro flujo de entrada (no estándar). El sistema ("mensaje de prueba") solo se ejecuta después de que i cntl+c sale del programa de correo, solo entonces bash intenta interpretar el "mensaje de prueba".
Respuesta1
system()
Realmente solo ejecuta líneas de comando. No es una cosa parecida a una pipa.
El cambio más pequeño posible para que su programa de ejemplo funcione sería
int main()
{
system("echo test msg | mail -s test_mail [email protected]");
return 0;
}
porque entonces su mensaje ingresará a mail
la entrada estándar del programa a través de una tubería.
Sería más práctico escribir su mensaje en un archivo temporal y luego redirigir mail
la entrada estándar desde ese archivo.