広告
広告
ioctl 関数をインプリメントします。正しい関数の定義を得るために最初にrequire "ioctl.ph";としなくてはなりません。FOUNCTION に応じて SCALAR が読み書きされます。SCALAR の文字列値へのポインタが、実際の ioctl コールの 3 番目の引数として渡されます。SCALAR が文字列値を持っておらず、数値を持っている場合には文字列値へのポインタの代わりにその値が渡されます。このことを保証するためには、使用する前に SCALAR に 0 を足します。ioctl() で使われる構造体の値を操作するにはpack() 関数と unpack() 関数が便利です。
#1 文字削除の文字として DEL を指定
require 'ioctl.ph';
$sgttyb_t = "ccccs"; # 4 つの char と 1 つの short
if (ioctl(STDIN,$TIOCGETP,$sgttyb)) {
@ary = unpack($sgttyb_t,$sgttyb);
$ary[2] = 127;
$sgttyb = pack($sgttyb_t,@ary);
ioctl(STDIN,$TIOCSETP,$sgttyb)
|| die "Can't ioctl: $!";
}
広告