2012-02-22 289 views
5

我一直寫如下因素代碼:運行shell腳本++

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

但是當我運行它第一次執行shell腳本。
我能做些什麼來執行「cout < <」該腳本將首先執行「」?

回答

11

刷新輸出流緩衝區應該足夠了。你可以用

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

或者做到這一點,如果你打算同時打印一個換行符,那麼你可以使用std::endl含蓄地刷新緩衝區:

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

可以使用cerr << "The script will be executed";
當你」重新嘗試使用cout打印某些東西,它將它保留在緩衝區中。 cerr正在立即打印,但@Jon回答得更好。

0

嘗試在調用system()系統調用之前清除stdout流。

1

您不會刷新輸出流。

嘗試:

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

該腳本執行第二次,調用cout和打印到控制檯之間的延遲可能是你扔了。