зеркало из https://github.com/github/ruby.git
38 строки
531 B
Ruby
38 строки
531 B
Ruby
|
require 'pty'
|
||
|
|
||
|
if ARGV.size == 0 then
|
||
|
ofile = "typescript"
|
||
|
else
|
||
|
ofile = ARGV[0]
|
||
|
end
|
||
|
|
||
|
logfile = File.open(ofile,"a")
|
||
|
|
||
|
system "stty -echo raw lnext ^_"
|
||
|
|
||
|
PTY.spawn("/bin/csh") do |r_pty,w_pty,pid|
|
||
|
|
||
|
Thread.new do
|
||
|
while true
|
||
|
w_pty.print STDIN.getc.chr
|
||
|
w_pty.flush
|
||
|
end
|
||
|
end
|
||
|
|
||
|
begin
|
||
|
while true
|
||
|
c = r_pty.sysread(512)
|
||
|
break if c.nil?
|
||
|
print c
|
||
|
STDOUT.flush
|
||
|
logfile.print c
|
||
|
end
|
||
|
rescue
|
||
|
# print $@,':',$!,"\n"
|
||
|
logfile.close
|
||
|
end
|
||
|
end
|
||
|
|
||
|
system "stty echo -raw lnext ^v"
|
||
|
|