本文に進む 日本−日本語
日本HPホーム 製品とサービス お客様サポート/ ダウンロード ソリューション ご購入の方法
≫ お問い合わせ
詳細検索オプション
日本HPホーム
HP-UX リファレンス: セクション 3 : ライブラリ (A~M) > f

flockfile(3S)

HP-UX 11i Version 2: September 2004
≫ 

テクニカル ドキュメント

PDF版
フィードバック
ここから本文が始まります

 ≫ 目次

 ≫ 索引

名称

flockfile(), ftrylockfile(), funlockfile() ― マルチスレッドアプリケーション内でのストリームの明示的ロック

構文

#include <stdio.h>

void flockfile(FILE *stream);

int ftrylockfile(FILE *stream);

void funlockfile(FILE *stream);

説明

flockfile(), ftrylockfile(), および funlockfile() では、アプリケーションレベルでストリームを明示的にロックできます。スレッドでこれらの関数を使用することによって、1 つの単位として実行される一連の入出力文を指示できます。

スレッドで flockfile() 関数を使用すると、 (FILE *) オブジェクトの所有権が取得できます。

スレッドで ftrylockfile() を使用すると、 (FILE *) オブジェクトが入手可能な場合は、そのオブジェクトの所有権が取得できます。 ftrylockfile() は、 flockfile() の非ブロッキング版です。

スレッドが持っていた所有権を放棄するには、 funlockfile() 関数を使用します。現在の所有者以外のスレッドが funlockfile() 関数を呼び出した場合の動作は未定義です。

論理的に、各ストリームに 1 つのカウントが対応しています。ストリームを作成すると、このカウントは暗黙的にゼロに初期化されます。カウントがゼロのとき、ストリームはアンロックされます。カウントが正の数の場合に、1 つのスレッドがそのストリームを所有しています。 flockfile() 関数を呼び出したときに、カウントがゼロの場合、またはカウントが正の数で呼び出し元がストリームの所有者の場合は、カウントが増分されます。そうでなければ、呼び出し元のスレッドは一時停止し、カウントがゼロに戻るまで待機します。 funlockfile() を呼び出すたびにカウントが減分されます。したがって、 flockfile() (または、正常終了した ftrylockfile() 呼び出し) と funlockfile() の組み合わせの呼び出しをネストすることができます。

(FILE *) オブジェクトを参照するすべての POSIX.1 および C の標準関数は、 (FILE *) オブジェクトの所有権を flockfile()funlockfile() を内部で使用して取得しているように動作します。

戻り値

flockfile()funlockfile() には戻り値はありません。 ftrylockfile() は、正常終了すると 0 を返し、ロックを取得できなかった場合は 0 ではない値を返します。

印刷用画面へ
プライバシー 本サイト利用時の合意事項
© 1983-2004 Hewlett-Packard Development Company, L.P.