2012-02-22 14 views
5

Ive folowing कोड लिख रहा:चल शेल स्क्रिप्ट ++

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

लेकिन जब मैं इसे चलाने के खोल स्क्रिप्ट पहले निष्पादित किया जाता है।
"cout < <" निष्पादित करने के लिए मैं क्या कर सकता हूं "स्क्रिप्ट पहले निष्पादित की जाएगी"?

उत्तर

11

आउटपुट स्ट्रीम बफर को फ्लश करना पर्याप्त होना चाहिए। आप

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

वैकल्पिक रूप से साथ ऐसा कर सकते हैं, अगर आप भी तो एक नई पंक्ति चरित्र मुद्रित करने का इरादा आप std::endl जो परोक्ष बफर flushes उपयोग कर सकते हैं:

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

आप उपयोग कर सकते हैं cerr << "The script will be executed";
जब आप ' cout का उपयोग करके कुछ प्रिंट करने की कोशिश कर रहा है, यह बफर में रखता है। cerr तुरंत प्रिंट कर रहा है लेकिन @ जोन ने बेहतर उत्तर दिया।

0

सिस्टम() syscall को कॉल करने से पहले stdout स्ट्रीम को फ़्लश करने का प्रयास करें।

1

आप आउटपुट स्ट्रीम को फ्लश नहीं कर रहे हैं।

प्रयास करें:

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

स्क्रिप्ट दूसरा निष्पादित किया जाता है, कंसोल के लिए cout करने के लिए कॉल और मुद्रण के बीच देरी शायद आप बंद फेंक रहा है।

संबंधित मुद्दे