$ irb -r io/console irb(main):001:0>Signal.trap(:WINCH){ p STDIN.winsize }
(この後めちゃくちゃウィンドウサイズを変える)
一応解説。
コンソールはサイズが変わる度にSIGWINCH
シグナルを端末に送る。
そしてIO#winsize
では内部でioctl(2)
のTIOCGWINSZ
操作をつかって端末のウィンドウサイズを取得している。
ここではSIGWINCH
をtrapした直後にウィンドウサイズを取得して表示しているというわけ。