Man page - flockfile(3)

Packages contains this manual

Available languages:

en fr es pl ja ru ro zh_TW zh_CN

Manual

LOCKFILE

NAME
SYNOPSIS 總 覽
DESCRIPTION 描 述
RETURN VALUE 返 回 值
ERRORS
AVAILABILITY
CONFORMING TO 標 準 參 考
SEE ALSO 參 見


NAME

flockfile, ftrylockfile, funlockfile - 為 標 準 輸 入 輸 出 鎖 定 檔 案 FILE

SYNOPSIS 總 覽

#include <stdio.h>

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

DESCRIPTION 描 述

標 準 輸 入 輸 出 庫 stdio 函 式 是 執 行 緒 安 全 的 。 這 是 透 過 為 每 個 檔 案 物 件 FILE 賦 予 一 個 鎖 定 計 數 和 (當 鎖 定 計 數 非 零 時 ) 一 個 所 有 者 執 行 緒 來 實 現 的 。 對 每 個 庫 函 式 呼 叫 , 這 些 函 式 等 待 直 到 檔 案 物 件 FILE 不 再 被 一 個 不 同 的 執 行 緒 鎖 定 , 然 後 鎖 定 它 , 進 行 所 需 的 I/O 操 作 , 再 次 對 它 解 鎖 。

(注 意 : 這 個 鎖 定 與 由 函 式 flock (2) 和 lockf (3) 實 現 的 鎖 定 無 關 。 )

所 有 這 些 操 作 對 C 程 式 設 計 師 來 說 都 是 不 可 見 的 , 但 是 有 兩 種 理 由 , 需 要 進 行 更 加 細 節 的 控 制 。 其 一 , 也 許 某 個 執 行 緒 需 要 進 行 不 可 分 割 的 一 系 列 I/O 操 作 , 不 應 當 被 其 他 執 行 緒 的 I/O 所 終 端 。 其 二 , 出 於 效 率 因 素 , 應 當 避 免 進 行 過 多 的 鎖 定 來 提 高 效 率 。

為 此 , 一 個 執 行 緒 可 以 顯 式 地 鎖 定 檔 案 物 件 FILE, 接 著 進 行 它 的 一 系 列 I/O 操 作 , 然 後 解 鎖 。 這 樣 可 以 避 免 其 他 執 行 緒 干 擾 。 如 果 這 樣 做 的 原 因 是 需 要 達 到 更 高 的 效 率 , 應 當 使 用 stdio 函 式 的 非 鎖 定 版 本 來 進 行 I/O 操 作 : 使 用 getc_unlocked () 和 putc_unlocked () 來 代 替 getc () 和 putc ()。

函 式 flockfile() 等 待 * filehandle 不 再 被 其 他 的 執 行 緒 鎖 定 , 然 後 使 當 前 執 行 緒 成 為 * filehandle 的 所 有 者 , 然 後 增 加 鎖 定 計 數 lockcount。

函 式 funlockfile() 減 少 鎖 定 計 數 。

函 式 ftrylockfile() flockfile() 的 非 鎖 定 版 本 。 它 在 其 他 執 行 緒 擁 有 * filehandle 時 不 做 任 何 處 理 , 否 則 取 得 所 有 權 並 增 加 鎖 定 計 數 。

RETURN VALUE 返 回 值

函 式 ftrylockfile() 返 回 零 , 如 果 成 功 的 話 (獲 得 了 鎖 定 ); 如 果 失 敗 就 返 回 非 零 。

ERRORS

無 。

AVAILABILITY

這 些 函 式 當 定 義 了 _POSIX_THREAD_SAFE_FUNCTIONS 時 可 用 。 它 們 存 在 於 libc 5.1.1 之 後 的 libc 版 本 中 , 以 及 glibc 2.0 之 後 的 glibc 版 本 中

CONFORMING TO 標 準 參 考

POSIX.1

SEE ALSO 參 見

unlocked_stdio (3)

本 頁 面 中 文 版 由 中 文 man 手 冊 頁 計 劃 提 供 。
中 文 man 手 冊 頁 計 劃 : https://github.com/man-pages-zh/manpages-zh