ioctl FILEHANDLE,FUNCTION,SCALAR

広告

広告

解説

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: $!";
}

参照

広告

Copyright (C) 2003-2006 七鍵 key@do.ai 初版:2003年07月07日 最終更新:2006年08月08日