array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ja', ), 'this' => array ( 0 => 'function.dio-fcntl.php', 1 => 'dio_fcntl', ), 'up' => array ( 0 => 'ref.dio.php', 1 => 'ダイレクト IO 関数', ), 'prev' => array ( 0 => 'function.dio-close.php', 1 => 'dio_close', ), 'next' => array ( 0 => 'function.dio-open.php', 1 => 'dio_open', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ja', 'path' => 'reference/dio/functions/dio-fcntl.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4 >= 4.2.0, PHP 5 < 5.1.0)
dio_fcntl — fd について C ライブラリの fcntl を実行する
関数 dio_fcntl() は、ファイル記述子
fd
において cmd
で指定された処理を行います。いくつかのコマンドでは、オプションの引数
args
の指定が必要となります。
fd
dio_open() が返すファイル記述子。
cmd
以下の処理のいずれか。
F_SETLK
- ロックが設定あるいはクリアされます。
ロックが他の誰かに設定されている場合、dio_fcntl()
は -1 を返します。
F_SETLKW
- F_SETLK
と似ていますが、ロックが他の誰かに設定されている場合は
dio_fcntl() はそのロックが開放されるまで待ちます。
F_GETLK
- dio_fcntl()
は、他の誰かがロックを妨げる場合、(後述の)連想配列を返します。
妨げるものがない場合、キー "type" は F_UNLCK
に設定されます。
F_DUPFD
- args
以上で最小のファイル記述子を探し、それを返します。
F_SETFL
- ファイル記述子のフラグを
args
で指定した値に設定します。指定できる値は
O_APPEND
、O_NONBLOCK
あるいは O_ASYNC
のいずれかです。
O_ASYNC
を使用するには、
PCNTL 拡張モジュールが必要です。
args
args
は連想配列で、
cmd
が F_SETLK
あるいは
F_SETLLW
の際に以下のキーを保持します。
C ライブラリをコールした結果を返します。
例1 ロックの設定と解除
<?php
$fd = dio_open('/dev/ttyS0', O_RDWR);
if (dio_fcntl($fd, F_SETLK, Array("type"=>F_WRLCK)) == -1) {
// ファイル記述子がロックされている
echo "ロックを解除できません。別のプロセスによってロックされています。";
} else {
echo "ロックが正常に設定/解除できました。";
}
dio_close($fd);
?>
注意: この関数は Windows 環境にはまだ実装されていません。