2015-04-08 5 views
5

एक नमूना स्क्रिप्ट खुलती देखते हुए /dev/tty:/dev/tty nailgun-सर्वर में खुलती टर्मिनल

# sample.rb 
tty=File.open("/dev/tty", "w+") 
tty.print "> " 
tty.puts tty.gets.upcase 

मैं यह सामान्य JRuby के साथ ठीक चला सकते हैं:

% jruby sample.rb 
> hello 
HELLO 
% 

हालांकि, अगर मैं कोशिश nailgun साथ /dev/tty उपयोग करने के लिए है, तो tty nailgun सर्वर के लिए बाध्य है, नहीं ग्राहक:

# server terminal          | # client terminal 
% jruby --ng-server         | 
NGServer 0.9.1 started on all interfaces, port 2113. | 
                 | % jruby --ng sample.rb 
> hello            | 
HELLO             | 
                 | % 

(लंबवत दूरी समय दिखाने के लिए है, प्रत्येक के लिए वास्तविक आउटपुट खाली लाइनों की कमी है)

क्या यह अपेक्षित व्यवहार या बग है?

यह अपेक्षित व्यवहार है, वहाँ एक रास्ता मैं कि क्या एक स्क्रिप्ट --ng साथ चलाया जा रहा है तो मैं उद्घाटन /dev/tty से बच सकते हैं का पता लगा सकते है?

उत्तर

0

Nailgun client/server protocol पर देखकर, ऐसा लगता है कि क्लाइंट के /dev/tty (क्लाइंट को फ़ाइल खोलने, क्लाइंट से सर्वर को पढ़ने/लिखने के लिए) का उपयोग करने की आवश्यकता होगी।

चाहे यह एक बग है या नहीं, यह वर्तमान में नेलगुन की क्षमताओं से बाहर है।

का पता लगा रहा एक Nailgun सर्वर पर हम कर रहे हैं कि क्या

# true if on a nailgun server, false elsewise 
system("ps -fp #{Process.pid} | grep NGServer > /dev/null") 
के माध्यम से किया जा सकता है