आपको एक बार में पूरा कार्यक्रम भेजने की आवश्यकता है।
जब आप कॉल रन python < p1
करते हैं तो शेल अजगर के आह्वान से पहले इनपुट का इंतजार कर रहा है। यानी, जब तक पूरे डेटा स्ट्रीम को शेल द्वारा पढ़ा नहीं जाता है, तब तक अजगर पूरी तरह से निष्पादित करना शुरू नहीं करता है और फिर इसे पूरी तरह से पारित कर दिया जाता है python
।
यहां तक कि python -u p1
इसके बजाय (जो कि फ़ाइल से अनफ़रफ़र्ड और रीड होता है p1
) चल रहा है, python
इससे पहले कि वह किसी भी फ़ाइल को निष्पादित करने से पहले पूरी फ़ाइल को पढ़ने की कोशिश करेगा।
इस प्रयोग को आजमाएं।
टर्मिनल 1:
mkfifo p1
python < p1
टर्मिनल 2:
cat > p1
print "Hello World"
print "Hello World"
आप देखेंगे कि आप कई पंक्तियों को भेज सकते हैं लेकिन शब्द 1 में अजगर कुछ नहीं करता है। अब ctrl+ दबाएं D। पूरा कार्यक्रम एक ही बार में निष्पादित होता है।
इसलिए, संक्षेप में, यदि आप एक पाइप से पढ़ना चाहते हैं, तो आपको पूरे कार्यक्रम को भेजने की आवश्यकता है। आप इस तरह से अंतःक्रियात्मक रूप से अजगर का उपयोग नहीं कर सकते।
exec 3> p1
कर रहे हैं और क्या है&3
औरexec 3> &1
? धन्यवाद।