आपको एक बार में पूरा कार्यक्रम भेजने की आवश्यकता है।
जब आप कॉल रन 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? धन्यवाद।