標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
Single UNIX Specification、バージョン 3 |
両方 | z/OS V1R8 |
#define _UNIX03_SOURCE
#include <stdio.h>
int ftrylockfile(FILE *file);
この関数により、明示的なアプリケーション・レベルの stdio (FILE*) オブジェクトのロッキングができます。この flockfile() ファミリーの各関数は、1 単位として実行される入出力ステートメントのシーケンスを表すのにスレッドが使用します。
ftrylockfile() 関数が指定する (FILE*) オブジェクトが使用可能である場合、(FILE*) オブジェクトのスレッドに対して所有権が与えられ、内部ロック・カウントが増加します。 そのスレッドが以前に所有権を取得していた場合、内部ロック・カウントは増加します。 別のスレッドが所有権を取得している場合、ftrylockfile() は呼び出しスレッドに所有権を与えず、非ゼロ値を戻します。 ftrylockfile() は、flockfile() の非ブロッキング・バージョンです。
内部ロック・カウントにより、flockfile() (または正常に終了した ftrylockfile()) および funlockfile() へのマッチング呼び出しをネストすることが可能になります。
z/OS® に関する考慮事項: flockfile() ファミリーの関数は、FILE * オブジェクトに基づいて機能します。同等として認識されていない複数の FILE * オブジェクトによって表される同じ物理ファイルを持つことが可能です。 例えば、fopen() がファイルをオープンし、open() が同じファイルをオープンし、fdopen() は FILE * オブジェクトを作成します。 この場合、最初の FILE * をロッキングしても 2 番目の FILE * がロックされて使用されることを妨げることはありません。