mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
9d77639f30
* process.c (proc_detach): new method Proc#detach(pid) which create background watcher thread to issue waitpid. [new] * process.c (rb_detach_process): utility function to detach process from C code. * ext/pty/pty.c (pty_finalize_syswait): terminate watcher thread, and detach child process (by creating new idle waitpid watcher thread). * ext/pty/pty.c (pty_syswait): may lost signal stopped child. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3561 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
37 lines
533 B
Ruby
37 lines
533 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"
|
|
|