flockfile() - stdio ロッキング

標準

標準/拡張機能 C/C++ 依存項目

Single UNIX Specification、バージョン 3

両方  z/OS V1R8

形式

#define _UNIX03_SOURCE 
#include <stdio.h>

void flockfile(FILE *file);

機能説明

この関数により、明示的なアプリケーション・レベルの stdio (FILE*) オブジェクトのロッキングができます。この flockfile() ファミリーの各関数は、1 単位として実行される入出力ステートメントのシーケンスを表すのにスレッドが使用します。

flockfile() 関数は、スレッドに対する (FILE*) オブジェクトの所有権を取得し、必要な場合待機して、内部ロック・カウントを増加させます。そのスレッドが以前に所有権を取得していた場合、内部ロック・カウントは増加します。

内部ロック・カウントにより、flockfile() (または正常に終了した ftrylockfile()) および funlockfile() へのマッチング呼び出しをネストすることが可能になります。

z/OS® に関する考慮事項: flockfile() ファミリーの関数は、FILE * オブジェクトに基づいて機能します。同等として認識されていない複数の FILE * オブジェクトによって表される同じ物理ファイルを持つことが可能です。 例えば、fopen() がファイルをオープンし、open() が同じファイルをオープンし、fdopen() は FILE * オブジェクトを作成します。 この場合、最初の FILE * をロッキングしても 2 番目の FILE * がロックされて使用されることを妨げることはありません。

戻り値

なし

注 :
  1. flockfile() 関数がボイドを戻すため、エラー情報を戻すことができません。
  2. デッドロック (またはループ) を防ぐことは、アプリケーションの責任です。 例えば、デッドロック (またはループ) が起こるのは、(FILE *) オブジェクトがクローズされるか、スレッドが終了してからすべてのロックされた (FILE *) オブジェクトを解放する場合です。

関連情報