给定一个打开的示例脚本/dev/tty:
# sample.rb
tty=File.open("/dev/tty", "w+")
tty.print "> "
tty.puts tty.gets.upcase
Run Code Online (Sandbox Code Playgroud)
我可以用正常的jruby运行它就好了:
% jruby sample.rb
> hello
HELLO
%
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试使用/dev/ttynailgun,那么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 |
| %
Run Code Online (Sandbox Code Playgroud)
(垂直间距是显示时间,每个实际输出缺少空行)
这是预期的行为,还是一个错误?
如果它是预期的行为,有没有办法我可以检测脚本是否正在运行,--ng所以我可以避免打开/dev/tty?
查看Nailgun 客户端/服务器协议,它看起来并不支持使用客户端所需的操作/dev/tty(让客户端打开文件,从客户端读/写到服务器)。
不管它是否是一个错误,它都超出了目前 Nailgun 的能力范围。
检测我们是否在 Nailgun 服务器上可以通过
# true if on a nailgun server, false elsewise
system("ps -fp #{Process.pid} | grep NGServer > /dev/null")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
89 次 |
| 最近记录: |