Man page - flockfile(3)

Packages contains this manual

Available languages:

en fr es pl ja ru ro zh_TW zh_CN

Manual

FLOCKFILE

名 前
書 式
説 明
返 り 値
エ ラ ー
属 性
準 拠
関 連 項 目
こ の 文 書 に つ い て

名 前

flockfile, ftrylockfile, funlockfile - 標 準 入 出 力 FILE の ロ ッ ク を 行 う

書 式

#include <stdio.h>

void flockfile(FILE * filehandle );
int ftrylockfile(FILE *
filehandle );
void funlockfile(FILE *
filehandle );

glibc 向 け の 機 能 検 査 マ ク ロ の 要 件 ( feature_test_macros (7) 参 照 ):

上 記 の 全 て の 関 数 :

/* Since glibc 2.24: */ _POSIX_C_SOURCE >= 199309L
|| /* Glibc versions <= 2.23: */ _POSIX_C_SOURCE
|| /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

説 明

標 準 入 出 力 関 数 は ス レ ッ ド セ ー フ で あ る 。 こ れ は 、 各 FILE オ ブ ジ ェ ク ト に 対 し 、 ロ ッ ク 数 (lockcount) と (ロ ッ ク 数 が 0 で な い 場 合 は ) 所 有 者 ス レ ッ ド (owner thread) を 管 理 す る こ と で 実 現 さ れ る 。 ラ イ ブ ラ リ の 呼 び 出 し が 行 わ れ る 毎 に 、 標 準 入 出 力 関 数 は FILE オ ブ ジ ェ ク ト が 他 の ス レ ッ ド に よ っ て ロ ッ ク さ れ て い な い 状 態 に な る ま で 待 ち 、 FILE オ ブ ジ ェ ク ト を ロ ッ ク し 、 要 求 さ れ て 入 出 力 を 行 い 、 オ ブ ジ ェ ク ト の ロ ッ ク を 解 除 す る 。

(注 : こ の ロ ッ ク は 、 flock (2) や lockf (3) と い っ た 関 数 が 行 う ロ ッ ク と は 全 く 無 関 係 で あ る 。 )

こ れ ら の こ と は す べ て C プ ロ グ ラ マ に は 見 え な い 部 分 で 行 わ れ る が 、 よ り 細 か い 制 御 が で き た 方 が よ い 理 由 が 2つ あ る だ ろ う 。 一 つ は 、 一 つ の ス レ ッ ド が 行 う 一 連 の 入 出 力 動 作 は 一 緒 に 行 わ れ 、 他 の ス レ ッ ド の 入 出 力 に よ っ て 中 断 さ れ な い 方 が よ い と い う こ と で あ ろ う 。 も う 一 つ は 、 効 率 を 大 き く 上 げ る た め に は ロ ッ ク の オ ー バ ヘ ッ ド を 避 け る 必 要 が あ る と い う こ と で あ ろ う 。

こ の 目 的 を 実 現 す る た め に 、 FILE オ ブ ジ ェ ク ト の ロ ッ ク 、 一 連 の 入 出 力 動 作 の 実 行 、 ロ ッ ク の 解 除 を ス レ ッ ド が 明 示 的 に 指 示 す る こ と が で き る 。 こ れ に よ り 、 他 の ス レ ッ ド が 途 中 で 入 出 力 を 行 う の を 防 止 す る 。 こ の よ う な こ と を 行 う 理 由 が 効 率 の 向 上 で あ る な ら ば 、 ロ ッ ク を 行 わ な い バ ー ジ ョ ン の 標 準 入 出 力 関 数 を 使 う こ と も で き る 。 例 え ば 、 getc (3) や putc (3) の 代 わ り に getc_unlocked (3) や putc_unlocked (3) を 使 用 す る 。

flockfile () 関 数 は 、 *filehandle が 他 の ス レ ッ ド に ロ ッ ク さ れ て い な い 状 態 に な る ま で 待 っ た の ち 、 現 在 の ス レ ッ ド を *filehandle の オ ー ナ に 設 定 し 、 ロ ッ ク 数 を 加 算 す る 。

funlockfile () 関 数 は 、 ロ ッ ク 数 を 減 算 す る 。

ftrylockfile () 関 数 は flockfile () の ブ ロ ッ キ ン グ を 行 わ な い バ ー ジ ョ ン で あ る 。 他 の ス レ ッ ド が *filehandle を ロ ッ ク し て い る 時 は 何 も 行 わ ず 、 そ う で な い 場 合 は *filehandle の 所 有 権 を 獲 得 し 、 ロ ッ ク 数 を 加 算 す る 。

返 り 値

ftrylockfile () 関 数 は ロ ッ ク に 成 功 す る と 0 を 返 し 、 失 敗 し た 場 合 は 0 以 外 の 値 を 返 す 。

エ ラ ー

な し 。

属 性

こ の 節 で 使 用 さ れ て い る 用 語 の 説 明 に つ い て は 、 attributes (7) を 参 照 。

Image grohtml-45759-1.png

準 拠

POSIX.1-2001, POSIX.1-2008.

_POSIX_THREAD_SAFE_FUNCTIONS が 定 義 さ れ て い る と き に こ れ ら の 関 数 を 使 用 す る こ と が で き る 。

関 連 項 目

unlocked_stdio (3)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man-pages プ ロ ジ ェ ク ト の リ リ ー ス 5.10 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は https://www.kernel.org/doc/man-pages/ に 書 か れ て い る 。