2012-02-22 43 views
5

Ive được viết code folowing:chạy kịch bản shell trong C++

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

Nhưng khi tôi chạy nó shell script được thực hiện đầu tiên.
Tôi có thể làm gì để thực thi "cout < <" Tập lệnh sẽ được thực thi "" trước tiên?

Trả lời

11

Làm sạch bộ đệm luồng đầu ra là đủ. Bạn có thể làm điều này với

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

Ngoài ra, nếu bạn dự định cũng in một ký tự xuống dòng sau đó bạn có thể sử dụng std::endl mà ngầm xả đệm:

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

bạn có thể sử dụng cerr << "The script will be executed";
khi bạn' đang cố gắng in một cái gì đó bằng cách sử dụng cout nó giữ rằng trong bộ đệm. cerr đang in ngay lập tức nhưng @Jon đã trả lời tốt hơn.

0

Hãy thử xả ra luồng stdout trước khi gọi hệ thống syscall().

1

Bạn không xả luồng đầu ra.

Hãy thử:

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

Các kịch bản được thực hiện thứ hai, sự chậm trễ giữa các cuộc gọi đến cout và in ra cửa sổ Console có lẽ ném bạn xuống.

Các vấn đề liên quan