2012-02-22 29 views
5

he estado escribiendo el código folowing:ejecutan los scripts de shell en C++

#include <iostream> 
#include <stdlib.h> 
using namespace std; 
    int main() { 
    cout << "The script will be executed"; 
    system("./simple.sh"); 
} 

Pero cuando lo ejecuto el script se ejecuta en primer lugar.
¿Qué puedo hacer para ejecutar "cout < <" La secuencia de comandos se ejecutará "" primero?

Respuesta

11

Vaciar el buffer de flujo de salida debería ser suficiente. Usted puede hacer esto con

cout << "The script will be executed"; 
cout.flush(); 

alternativa, si la intención de imprimir también un carácter de nueva línea, puede utilizar std::endl que implícitamente vacía el búfer:

cout << "The script will be executed" << endl; 
0

puede utilizar cerr << "The script will be executed";
cuando' Estoy intentando imprimir algo usando cout y lo mantiene en el búfer. cerr está imprimiendo inmediatamente pero @Jon respondió mejor.

0

Pruebe a lavar la corriente stdout antes de llamar al sistema() syscall.

1

No está descargando el flujo de salida.

Probar:

cout << "The script will be executed" << endl; // or cout.flush() 
system("./simple.sh"); 

El script se ejecuta en segundo lugar, el tiempo transcurrido entre la llamada a cout y la impresión de la consola está lanzando probablemente se fuera.

Cuestiones relacionadas