बैश में, इस उम्मीद के क्रम में उत्पादन देता है:रुबी से एसटीडीईआरआर आउटपुट रीडायरेक्ट करते समय पहले एसटीडीओयूटी आउटपुट से पहले क्यों आता है?
ruby -e "puts 'one'; raise 'two'"
one
-e:1:in `<main>': two (RuntimeError)
लेकिन अगर मैं STDOUT करने के लिए STDERR अनुप्रेषित, मैं उत्पादन, है जो मैं नहीं करना चाहता से पहले त्रुटि मिलती है:
ruby -e "puts 'one'; raise 'two'" 2>&1 | cat
-e:1:in `<main>': two (RuntimeError)
one
मैं आउटपुट को एक टेक्स्ट फ़ाइल में रीडायरेक्ट करना चाहता हूं (यह उपरोक्त cat
जैसा व्यवहार करता है) और आउटपुट और अपवाद दोनों प्राप्त करता है, लेकिन उसी टर्मिनल में आउटपुट को देखते समय उसी क्रम में। क्या यह हासिल किया जा सकता है? हमेशा तुरंत आउटपुट
puts "one"
$>.flush
STDERR दूसरी ओर:
STDEER हमेशा जबकि STDOUT आमतौर पर मुद्रित करने के लिए बफ़र है धारा में छपा है क्या करना चाहिए। –