¿Cómo canalizar una salida cat a la entrada estándar?

¿Cómo canalizar una salida cat a la entrada estándar?

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 mailla 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 mailla entrada estándar desde ese archivo.

información relacionada