यदि मैं किसी दिए गए कमांड के साथ पाइथन में एक नया subprocess
स्पॉन करता हूं (मान लीजिए कि मैं python
कमांड के साथ पाइथन दुभाषिया शुरू करता हूं), मैं प्रक्रिया (एसटीडीआईएन के माध्यम से) में नया डेटा कैसे भेज सकता हूं?एक उपप्रजाति को जीवित रखें और इसे आज्ञाएं दें? पायथन
उत्तर
मानक subprocess मॉड्यूल का उपयोग करें। आप प्रक्रिया शुरू करने के लिए subprocess.Popen() का उपयोग करते हैं, और यह पृष्ठभूमि में चलाएगा (यानी आपके पायथन प्रोग्राम के साथ ही)। जब आप Popen() को कॉल करते हैं, तो आप शायद stprin, stdout और stderr पैरामीटर को subprocess.PIPE पर सेट करना चाहते हैं। फिर आप डेटा को लिखने और पढ़ने के लिए लौटे ऑब्जेक्ट पर stdin, stdout और stderr फ़ील्ड का उपयोग कर सकते हैं।
Untested उदाहरण कोड:
from subprocess import Popen, PIPE
# Run "cat", which is a simple Linux program that prints it's input.
process = Popen(['/bin/cat'], stdin=PIPE, stdout=PIPE)
process.stdin.write(b'Hello\n')
process.stdin.flush()
print(repr(process.stdout.readline())) # Should print 'Hello\n'
process.stdin.write(b'World\n')
process.stdin.flush()
print(repr(process.stdout.readline())) # Should print 'World\n'
# "cat" will exit when you close stdin. (Not all programs do this!)
process.stdin.close()
print('Waiting for cat to exit')
process.wait()
print('cat finished with return code %d' % process.returncode)
तो मान लें कि मुझे एक साथ चलने वाली कई प्रक्रियाओं की आवश्यकता है। क्या 'पोपेन()', या 'कांटा' के साथ बहुत से उपप्रोसेसरों को फैलाना बेहतर विचार है? – n0pe
Popen प्रक्रियाओं कांटा करता है। यह केवल एक प्रश्न है कि आप निम्न स्तर का कांटा खुद करना चाहते हैं या आप इसे उच्च स्तर की लाइब्रेरी में लपेटना चाहते हैं। अंतिम परिणाम बिल्कुल वही है। –
तो कई समवर्ती पॉपेंस सिस्टम को बंद नहीं करेंगे? धन्यवाद, मैं इसे आज़मा दूंगा। – n0pe
एक कई आदेशों आग उपप्रक्रिया द्वारा बनाई गई सुरंग जीवित नहीं रखा जा सकता है। यह आप उपप्रक्रिया stdin, stdout जैसे अन्य सामान के लिए, paramiko पर गौर कर सकते प्राप्त करने के लिए, stderr आप इस लिंक के माध्यम से python subprocess है, क्योंकि यह आपकी पहली अजगर परियोजना है जा सकते हैं यह है बेहतर आप पढ़ सकते हैं और सामान को परखें।
मत करो।
आप एक उपप्रक्रिया आदेशों को पर भेजने एक प्राइवेट बनाने और उसके बाद Pty अपने STDIN से जुड़ी के एक छोर से उपप्रक्रिया कांटा करने के लिए चाहते हैं। ,
RNULL = open('/dev/null', 'r')
WNULL = open('/dev/null', 'w')
master, slave = pty.openpty()
print parsedCmd
self.subp = Popen(parsedCmd, shell=False, stdin=RNULL,
stdout=WNULL, stderr=slave)
इस कोड में Pty stderr क्योंकि यह आदेशों भेजने त्रुटि संदेश के बजाय प्राप्त करता है जुड़ा हुआ है, लेकिन सिद्धांत एक ही है:
यहाँ मेरी कोड के कुछ से एक टुकड़ा है।
subprocess के साथ pty.openpty() का उपयोग न करें - यह जटिल है। Subprocess.PIPE का उपयोग करें, और उपप्रोसेसर मॉड्यूल आपके लिए इसका ख्याल रखे। (साथ ही सरल और अधिक मानक होने के नाते, वह एक पाइप का उपयोग करेगा, जो एक पीटीवी से हल्का वजन है)। – user9876
- 1. HTTP रखें जीवित रखें और टीसीपी जीवित रखें
- 2. पायथन सॉकेट - सॉकेट को जीवित रखें?
- 3. एफ # कंपाइलर जीवित वस्तुओं को जीवित रखें
- 4. XPCOM सॉकेट बंद हो रहा है। इसे जीवित कैसे रखें?
- 5. कमांड लाइन उपकरण को जीवित रखें
- 6. पायथन 2.5 में, मैं एक उपप्रजाति को कैसे मारूं?
- 7. कैसे एक उपप्रजाति को आग और भूलना है?
- 8. कंप्यूटर सोते समय एसएसएच सत्र को जीवित रखें?
- 9. पायथन: एक प्रक्रिया चलाएं और इसे मार दें यदि यह एक घंटे के भीतर समाप्त नहीं होता है
- 10. UIWebView और जीवित रहें?
- 11. ब्राउज़र के बिना प्रोग्रामिक रूप से HTTP सत्र जीवित रखें
- 12. पायथन उपप्रजाति बच्चों के आउटपुट को फाइल और टर्मिनल में लाती है?
- 13. इस पायथन कोड को कैसे गति दें?
- 14. नई फ़ाइल में विधि को ले जाएं और इसे उसी श्रेणी में रखें (इसे आंशिक बनाएं)
- 15. इसे बनाए गए सूचियों की सूची कैसे बनाए रखें
- 16. पायथन सिद्धांत: पूरे ब्लॉक को छोड़ दें?
- 17. स्ट्रिंग स्ट्रिंग और इसे int सरणी पर रखें
- 18. एक एंड्रॉइड फोन को जॉयपैड में बदल दें और इसे वाई-फाई
- 19. जीवित कॉल
- 20. एचटीएमएल तत्व कैसे ढूंढें और फिर इसे हटा दें?
- 21. कोडइग्निटर छवि अपलोड करें और फिर इसे आकार दें
- 22. PHP में डेटा फ्लश करने और उपयोगकर्ता को डिस्कनेक्ट करने के लिए कैसे करें, लेकिन स्क्रिप्ट को जीवित रखें
- 23. जीवित जनरेशन को समझना मीट्रिक
- 24. सी # में एक HTTP कनेक्शन जिंदा रखें?
- 25. प्रक्रिया कैसे शुरू करें और फिर इसे तुरंत रोक दें?
- 26. वेबस्केट कनेक्शन को जीवित रखना
- 27. ग्रहण बाज़ार धीमा, इसे कैसे गति दें?
- 28. दीर्घकालिक पायथन परियोजनाओं को कैसे बनाए रखें w.r.t. निर्भरता और पायथन संस्करण?
- 29. जीवित() और प्रतिनिधि() से बाध्य() तेज है?
- 30. एक आर्क बनाएं और इसे ग्रेड करें
अगर यह एक खोल आप के साथ बातचीत को स्वचालित करना चाहते है 'pexpect' बात इस तरह की लिए अच्छा है। – wim