जब प्रक्रिया पृष्ठभूमि में चलती है, तो फ़ाइल को रीडायरेक्ट करें


4

पृष्ठभूमि में चलने पर मैं किसी प्रोग्राम के स्टडआउट को किसी फ़ाइल में पुनर्निर्देशित कैसे कर सकता हूं?

मेरे पास एक प्रोग्राम है जो हर सेकंड आउटपुट उत्पन्न करता है। जब मैं इसे सामान्य रूप से चलाता हूं और किसी फ़ाइल पर रीडायरेक्ट करता हूं, तो आउटपुट उस फ़ाइल में अपेक्षित रूप से होता है:

#./program > file.txt
#cat file.txt
 output
 output
 output
#

जब मैं पृष्ठभूमि में एक ही काम करने की कोशिश करता हूं, तो फाइल खाली रहेगी:

#./program > file.txt &
#cat file.txt
#

जिस तरह से मैं यह होने की उम्मीद नहीं है। क्या कार्यक्रम चला रहे हैं?
slhck

यह कार्यक्रम अपने आप में अप्रासंगिक है, लेकिन एक सरल निष्पादन योग्य है जो हर सेकंड में कुछ की जाँच करता है और वर्तमान मूल्य को रोक देता है।
राउफ़ले

1
कार्यक्रम समाप्त होने पर क्या यह भी खाली है?
बर्नहार्ड

1
क्या आप हमारे द्वारा चलाए जा रहे वास्तविक कार्यक्रम पर अधिक विवरण दे सकते हैं? आमतौर पर, पृष्ठभूमि में चलने से कोई फर्क नहीं पड़ना चाहिए।
chepner

1
किस बारे में sh -c './program > file.txt; cat file.txt' &?
शीला जूली

जवाबों:


4

किस बारे में sh -c './program > file.txt; cat file.txt' &?


यह मेरे लिए काम नहीं करता है
सिंगोलप्यम

stackoverflow.com/a/11337310/8611 टी के साथ काम किया। सुनिश्चित नहीं है कि अग्रभूमि की तुलना में पृष्ठभूमि में बफ़रिंग अलग क्यों है
सिंगोपोलिमा

2

जब आप किसी पाठ फ़ाइल में रीडायरेक्ट कर रहे हैं, तो आप कंसोल से फ़ाइल में स्ट्रीम प्रकार बदल रहे हैं । कंसोल आउटपुट अप्रभावित है, जबकि फ़ाइल आउटपुट बफ़र किया गया है। जब तक प्रोग्राम स्टडआउट डिवाइस (फ़ाइल) को फ्लश नहीं करता, तब तक टेक्स्ट बफर करना जारी रखेगा, जब तक कि बफरिंग थ्रेशहोल्ड तक नहीं पहुँच जाता। यदि पाठ "आउटपुट \ n" हर 2 सेकंड में छपा है, और दहलीज 4,096 बाइट्स है, तो फ़ाइल में प्रोग्राम से किसी भी आउटपुट को देखने में लगभग 20 मिनट लगेंगे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.