/dev/tty 在钉枪服务器终端打开
/dev/tty opens in nailgun-server terminal
给定一个打开 /dev/tty
的示例脚本:
# sample.rb
tty=File.open("/dev/tty", "w+")
tty.print "> "
tty.puts tty.gets.upcase
我可以 运行 使用普通的 jruby 就可以了:
% jruby sample.rb
> hello
HELLO
%
但是,如果我尝试将 /dev/tty
与 nailgun 一起使用,则 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
?
查看 Nailgun client/server protocol,它看起来不支持使用客户端的 /dev/tty
需要发生的事情(让客户端打开文件,read/write 来自客户端到服务器)。
不管是不是bug,目前Nailgun都无法解决。
可以通过
检测我们是否在 Nailgun 服务器上
# true if on a nailgun server, false elsewise
system("ps -fp #{Process.pid} | grep NGServer > /dev/null")
给定一个打开 /dev/tty
的示例脚本:
# sample.rb
tty=File.open("/dev/tty", "w+")
tty.print "> "
tty.puts tty.gets.upcase
我可以 运行 使用普通的 jruby 就可以了:
% jruby sample.rb
> hello
HELLO
%
但是,如果我尝试将 /dev/tty
与 nailgun 一起使用,则 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
?
查看 Nailgun client/server protocol,它看起来不支持使用客户端的 /dev/tty
需要发生的事情(让客户端打开文件,read/write 来自客户端到服务器)。
不管是不是bug,目前Nailgun都无法解决。
可以通过
检测我们是否在 Nailgun 服务器上# true if on a nailgun server, false elsewise
system("ps -fp #{Process.pid} | grep NGServer > /dev/null")