मैं एक एनसीयूआरएसईएस कार्यक्रम के साथ बातचीत करने की कोशिश कर रहा हूं।टर्मिनल होने का नाटक करने वाले बच्चे की प्रक्रिया से मैं कैसे बातचीत करूं?
उदाहरण के तौर पर मैं जीएनयू स्क्रीन का उपयोग कर रहा हूं और अंदर योग्यता चला रहा हूं। (आप इसके बजाय एमसी के साथ कोशिश कर सकते हैं।)
नीचे दिया गया प्रोग्राम मेरे सत्र से कनेक्ट करने के लिए एक स्क्रीन सत्र शुरू करता है।
मैं तीर-डाउन और तीर-अप दबाकर नेविगेट करना चाहता हूं।
अगर मैं बाहर निकलने के लिए 'q' भेजता हूं तो मुझे अपने अन्य स्क्रीन सत्र में एक बॉक्स पॉप अप दिखाई देता है।
तीर कुंजी जैसे विशेष कुंजी प्राप्त करने के लिए मुझे क्या करने की ज़रूरत है?
वर्तमान में यह वीटी 102 अनुक्रम को अनदेखा कर रहा है जो मैं भेज रहा हूं।
from twisted.internet import protocol, reactor
class MyPP(protocol.ProcessProtocol):
def connectionMade(self):
reactor.callLater(1.0, self.foo)
def foo(self):
self.transport.write('\033[B')
def processExited(self, reason):
print "processExited, status %s" % (reason.value.exitCode,)
def outReceived(self, data):
print data
def errReceived(self, data):
print "errReceived!", data
pp = MyPP()
command = ['screen', '-x']
reactor.spawnProcess(pp, command[0], command, {'TERM':'xterm'}, usePTY=True)
reactor.run()
अद्यतन:
टेड मुझे ESC [एक (ऊपर) और ESC [बी (नीचे) बैश के साथ काम करता साथ आदेश इतिहास में चलने को कहा।
आश्चर्य की बात क्यों है कि मैंने टीईआरएम = xterm को TERM = ansi में बदल दिया है जो इसे ठीक करता है। क्यों xterm काम नहीं करता है अभी भी मुझे पहेली।
यह एक कुछ भ्रामक सवाल है - आप कह रहे हैं कि कैसे मुड़ के ऊपर इस तरह के तीर से नीचे के रूप में नियंत्रण चाबियाँ, भेजने के लिए, नेटवर्क के पार? – Michael
नेटवर्क भर में नहीं। spawnProcess स्थानीय रूप से एक प्रक्रिया शुरू करता है और फ़ाइल वर्णनकर्ताओं को तार देता है ताकि आप इससे बात कर सकें। –
में 'foo' नीचे-तीर होना ESC बी है? नीचे-तीर उत्पन्न ESC [बी, न सिर्फ ESC बी – torek