2 .\" Hey Emacs! This file is -*- nroff -*- source.
4 .\" This manpage is Copyright (C) 1992 Drew Eckhardt;
5 .\" and Copyright (C) 1993 Michael Haardt, Ian Jackson;
6 .\" and Copyright (C) 1998 Jamie Lokier;
7 .\" and Copyright (C) 2002 Michael Kerrisk.
9 .\" Permission is granted to make and distribute verbatim copies of this
10 .\" manual provided the copyright notice and this permission notice are
11 .\" preserved on all copies.
13 .\" Permission is granted to copy and distribute modified versions of this
14 .\" manual under the conditions for verbatim copying, provided that the
15 .\" entire resulting derived work is distributed under the terms of a
16 .\" permission notice identical to this one.
18 .\" Since the Linux kernel and libraries are constantly changing, this
19 .\" manual page may be incorrect or out-of-date. The author(s) assume no
20 .\" responsibility for errors or omissions, or for damages resulting from
21 .\" the use of the information contained herein. The author(s) may not
22 .\" have taken the same level of care in the production of this manual,
23 .\" which is licensed free of charge, as they might when working
26 .\" Formatted or processed versions of this manual, if unaccompanied by
27 .\" the source, must acknowledge the copyright and authors of this work.
29 .\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu>
30 .\" Modified 1995-09-26 by Andries Brouwer <aeb@cwi.nl>
31 .\" and again on 960413 and 980804 and 981223.
32 .\" Modified 1998-12-11 by Jamie Lokier <jamie@imbolc.ucc.ie>
33 .\" Applied correction by Christian Ehrhardt - aeb, 990712
34 .\" Modified 2002-04-23 by Michael Kerrisk <mtk.manpages@gmail.com>
35 .\" Added note on F_SETFL and O_DIRECT
36 .\" Complete rewrite + expansion of material on file locking
37 .\" Incorporated description of F_NOTIFY, drawing on
38 .\" Stephen Rothwell's notes in Documentation/dnotify.txt.
39 .\" Added description of F_SETLEASE and F_GETLEASE
40 .\" Corrected and polished, aeb, 020527.
41 .\" Modified 2004-03-03 by Michael Kerrisk <mtk.manpages@gmail.com>
42 .\" Modified description of file leases: fixed some errors of detail
43 .\" Replaced the term "lease contestant" by "lease breaker"
44 .\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
45 .\" Added notes on capability requirements
46 .\" Modified 2004-12-08, added O_NOATIME after note from Martin Pool
47 .\" 2004-12-10, mtk, noted F_GETOWN bug after suggestion from aeb.
48 .\" 2005-04-08 Jamie Lokier <jamie@shareable.org>, mtk
49 .\" Described behavior of F_SETOWN/F_SETSIG in
50 .\" multithreaded processes, and generally cleaned
51 .\" up the discussion of F_SETOWN.
52 .\" 2005-05-20, Johannes Nicolai <johannes.nicolai@hpi.uni-potsdam.de>,
53 .\" mtk: Noted F_SETOWN bug for socket file descriptor in Linux 2.4
54 .\" and earlier. Added text on permissions required to send signal.
55 .\" 2009-09-30, Michael Kerrisk
56 .\" Note obsolete F_SETOWN behavior with threads.
57 .\" Document F_SETOWN_EX and F_GETOWN_EX
59 .\" Japanese Version Copyright (c) 1996 Takeshi Ueno
60 .\" and Copyright (c) 2005, 2006, 2008 Akihiro MOTOKI
62 .\" Translated 1996-07-03, Takeshi Ueno <tueno@vio.co.jp>
63 .\" Modified 1998-09-10, HANATAKA Shinya <hanataka@abyss.rim.or.jp>
64 .\" Modified 1999-08-14, HANATAKA Shinya <hanataka@abyss.rim.or.jp>
65 .\" Updated & Modified 2001-04-03, Yuichi SATO <ysato@h4.dion.ne.jp>
66 .\" Updated & Modified 2005-03-15, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
67 .\" Updated & Modified 2005-04-22, Akihiro MOTOKI
68 .\" Updated & Modified 2005-10-14, Akihiro MOTOKI
69 .\" Updated & Modified 2005-11-19, Akihiro MOTOKI, LDP v2.14
70 .\" Updated 2006-04-16, Akihiro MOTOKI, LDP v2.29
71 .\" Updated 2008-02-11, Akihiro MOTOKI, LDP v2.77
72 .\" Updated 2008-09-19, Akihiro MOTOKI, LDP v3.09
73 .\" Updated 2010-04-23, Akihiro MOTOKI, LDP v3.24
75 .\"WORD: asynchronous I/O 非同期 I/O
76 .\"WORD: descriptor ディスクリプタ
77 .\"WORD: open file description オープンファイル記述
78 .\"WORD: feature test macro 機能検査マクロ
79 .\"WORD: I/O availability signal I/O が利用可能になったことを示すシグナル
81 .TH FCNTL 2 2009-10-17 "Linux" "Linux Programmer's Manual"
83 fcntl \- ファイルディスクリプタの操作を行う
86 .B #include <unistd.h>
89 .BI "int fcntl(int " fd ", int " cmd ", ... /* " arg " */ );"
100 はオプションとして第三引き数をとることができる。
117 .BR F_DUPFD " (\fIlong\fP)"
126 では指定されたディスクリプタが使われる点が違う。
128 成功すると、新しいディスクリプタが返される。
134 .BR F_DUPFD_CLOEXEC " (\fIlong\fP; Linux 2.6.24 以降)"
136 と同様だが、それに加えて複製されたディスクリプタに対して
137 close-on-exec フラグをセットする。
150 .SS "ファイルディスクリプタ・フラグ"
151 以下のコマンドを使って、ファイルディスクリプタに関連するフラグ
153 現在のところ、定義されているフラグは一つだけである:
157 ビットが 0 なら、ファイルディスクリプタは
159 を行ってもオープンされたままだが、そうでない場合はクローズされる。
161 .BR F_GETFD " (\fIvoid\fP)"
162 ファイルディスクリプタ・フラグを読み出す。
166 .BR F_SETFD " (\fIlong\fP)"
171 オープンファイル記述 (open file description) には、
172 ファイル記述毎に設定される状態フラグがいくつかある。これらのフラグは
182 などで) 複製されたファイルディスクリプタ同士は
191 .BR F_GETFL " (\fIvoid\fP)"
196 .BR F_SETFL " (\fIlong\fP)"
202 .RB ( O_RDONLY ", " O_WRONLY ", " O_RDWR )
204 .BR O_CREAT ", " O_EXCL ", " O_NOCTTY ", " O_TRUNC )
206 Linux では、このコマンドで変更できるのは
213 .\" FIXME . POSIX.1-2001 によると、 O_SYNC も fcntl(2) で変更できるべきだが、
214 .\" 現在のところ Linux では許可されていない。
215 .\" http://bugzilla.kernel.org/show_bug.cgi?id=5994 参照
217 .BR F_GETLK ", " F_SETLK ", " F_SETLKW
218 は、レコード・ロックの獲得/解放/テストのために使用する
219 (レコード・ロックはファイルセグメント・ロックや
223 は、以下に示すフィールドを含む構造体へのポインタである
224 (フィールドの順序は関係なく、構造体に他のフィールドがあってもよい)。
230 short l_type; /* Type of lock: F_RDLCK,
232 short l_whence; /* How to interpret l_start:
233 SEEK_SET, SEEK_CUR, SEEK_END */
234 off_t l_start; /* Starting offset for lock */
235 off_t l_len; /* Number of bytes to lock */
236 pid_t l_pid; /* PID of process blocking our lock
244 .IR l_whence ", " l_start ", " l_len
245 フィールドで、ロックを行いたいバイト範囲を指定する。
246 ファイルの末尾より後ろのバイトをロックすることはできるが、
247 ファイルの先頭より前のバイトをロックすることはできない。
250 はロックを行う領域の開始オフセットである。
261 の場合は現在のファイルオフセットからのオフセット、
265 の場合はファイルの末尾からのオフセットと解釈される。
277 .IR l_start + l_len \- 1
280 に 0 を指定した場合は特別な意味を持つ:
281 .IR l_whence " and " l_start
282 で指定される位置からファイルの末尾までの全てのバイトをロックする
283 (ファイルがどんなに大きくなったとしてもファイルの末尾までロックする)。
287 をサポートする実装を認めている (必須ではない)。
294 この動作はカーネル 2.4.21 以降および 2.5.49 以降の Linux で
298 フィールドは、ファイルに対して読み出しロック
304 ファイルのある領域に対して、読み出しロック (共有ロック) を保持できる
305 プロセス数に制限はないが、書き込みロック (排他ロック) を保持できる
306 のは一つのプロセスだけである。排他ロックを設定すると、(共有ロックか
307 排他ロックにかかわらず) 他のロックは何も設定できない。
308 一つのプロセスは、ファイルのある領域に対して一種類のロックしか保持できない。
309 新規のロックがロックが設定されている領域に対して適用されると、既存のロック
311 (新規のロックで指定されたバイト範囲が既存ロックの範囲と一致する場合以外では、
312 変換の過程で既存のロックの分割、縮小、結合が行われることがある)。
314 .BR F_SETLK " (\fIstruct flock *\fP)"
325 .IR l_whence ", " l_start ", " l_len
327 指定されたロックが他のプロセスが設定しているロックと衝突する場合は、
336 .BR F_SETLKW " (\fIstruct flock *\fP)"
338 と同様だが、こちらではそのファイルに対して衝突するロックが
339 適用されていた場合に、そのロックが解放されるのを待つ点が異なる。
340 待っている間にシグナルを受けた場合は、システムコールは中断され、
341 (シグナルハンドラが戻った直後に) 返り値 \-1 を返す (また
349 .BR F_GETLK " (\fIstruct flock *\fP)"
352 にはそのファイルに適用しようとするロックに関する情報が入っている。
361 を設定し、他のフィールドは変更せずに、復帰する。
362 違う種別のロックが (一つもしくは複数) 適用されていて
365 は、原因となったロックの一つについての詳細情報を構造体
368 .IR l_type ", " l_whence ", " l_start ", " l_len
371 にロックを保持しているプロセスの PID を設定して、復帰する。
375 は読み出し用にオープンされていなければならない。
378 は書き込み用にオープンされていなければならない。
379 読み書き両方のロックを適用するには、読み書き両用で
385 プロセスが終了したときや、ロックが適用されているファイルを参照している
386 ファイルディスクリプタのいずれかがクローズされた場合にも解放される。
388 .\" .RB ( open "(2), " dup "(2), " dup2 "(2), " fcntl ()
389 .\" の呼び出しによって同じファイルを参照するファイルディスクリプタが
395 といったファイルにロックを適用しているときに、
396 あるライブラリ関数が何かの理由で同じファイルを open, read, close
397 すると、そのファイルへのロックが失われることになる。
401 で作成された子プロセスには継承されないが、
407 stdio 関連の関数ではレコードのロックの使用は回避される;
413 .SS "強制ロック (mandatory locking)"
414 上述のロックにはアドバイザリ・ロック (advisory lock) と強制ロック (mandatory
415 lock) の二種類があるが、デフォルトではアドバイザリ・ロックとなる。
417 アドバイザリ・ロックに強制力はなく、協調して動作するプロセス間でのみ
420 強制ロックは全てのプロセスに対して効果がある。
421 あるプロセスが互換性のない強制ロックが適用されたファイル領域に対して
425 により) 互換性のないアクセスを実行しようとした場合、
431 フラグが有効になっていないときは、ロックが削除されるか、
432 ロックがアクセスと互換性のあるモードに変換されるまで、
433 システムコールは停止 (block) される。
435 フラグが有効になっているときは、システムコールはエラー
439 強制ロックを使用するためには、ロック対象のファイルが含まれるファイルシステム
440 と、ロック対象のファイル自身の両方について、強制ロックが有効になっていなけれ
441 ばならない。ファイルシステムについて強制ロックを有効にするには、
443 に "\-o mand" オプションを渡すか、
447 フラグを指定する。ファイルについて強制ロックを有効にするには、
448 そのファイルのグループ実行許可 (group execute permission) を無効とし、
449 かつ set-group-ID 許可ビットを有効にする
455 Linux の強制ロックの実装は信頼性に欠けるものである。
464 は、I/O が利用可能になったことを示すシグナルを管理するために使用される。
466 .BR F_GETOWN " (\fIvoid\fP)"
473 を受けているプロセスのプロセスID かプロセスグループを
476 プロセスグループID は負の値として返される (下記のバグの章を参照)。
480 .BR F_SETOWN " (\fIlong\fP)"
488 プロセス ID またはプロセスグループID を
492 プロセスグループID は負の値として指定する。
493 ほとんどの場合、呼び出し元プロセスは所有者として自分自身を指定する
504 コマンドを使用してファイルディスクリプタに
506 状態フラグを設定した場合には、そのファイルディスクリプタへの
513 以外の別のシグナルの配送を受けられるように
515 許可 (permission) のチェックで失敗した場合には、
519 により指定された所有者のプロセス (またはプロセスグループ) に
522 に書かれているのと同じ許可のチェックが行われる。
526 (但し、下記の「バグ」の章を参照のこと)。
528 ファイルディスクリプタがソケットを参照している場合は、
530 を使用して、ソケットに帯域外 (out-of-band) データが届いた時に
532 シグナルを配送する相手を選択することもできる
536 がソケットが「特別な状態」にあると報告することだろう)。
538 .\" カーネルソースを見るとこの記述は間違っているようだし、
539 .\" プログラムを書いてみたところ、端末のフォアグランド・プロセスグループで
540 .\" なくても、端末が生成した SIGIO シグナルを受けとる。
543 .\" ファイルディスクリプタが端末デバイスを参照している場合には、
544 .\" SIGIO シグナルはその端末のフォアグランド・プロセスグループへと送られる。
546 バージョン 2.6.11 以前の 2.6.x カーネルでは、以下に示す動作であった。
549 スレッドグループをサポートしているスレッドライブラリ (例えば NPTL) を
550 使って動作しているマルチスレッド・プロセスで
555 .\" The relevant place in the (2.6) kernel source is the
556 .\" 'switch' in fs/fcntl.c::send_sigio_to_task() -- MTK, Apr 2005
557 プロセス全体を示すプロセスID ではなく、プロセス内の特定の
558 スレッドを示すスレッドID と解釈される。
561 を使う場合には、きちんと結果を受け取るには、
568 (現状の Linux スレッド実装では、メイン・スレッドのスレッドID は
569 そのスレッドのプロセスID と同じである。つまり、
570 シグナル・スレッドのプログラムではこの場合
575 ただし、注意すべき点として、この段落で述べたことは、
576 ソケットの帯域外データが届いたときに生成される
579 このシグナルは常にプロセスかプロセスグループに送られ、
583 .\" send_sigurg()/send_sigurg_to_task() bypasses
584 .\" kill_fasync()/send_sigio()/send_sigio_to_task()
585 .\" to directly call send_group_sig_info()
586 .\" -- MTK, Apr 2005 (kernel 2.6.11)
589 上記の動作は、Linux 2.6.12 で図らずも削除され、
591 Linux 2.6.32 以降で、特定のスレッド宛にシグナル
599 .BR F_GETOWN_EX " (struct f_owner_ex *) (Linux 2.6.32 以降)"
602 操作で定義された現在のファイルディスクリプタの所有者設定
605 が指す構造体に格納されて返される。構造体は以下の通りである。
623 フィールドは、スレッド ID、プロセス ID、プロセスグループ ID を
628 .BR F_SETOWN_EX " (struct f_owner_ex *) (Linux 2.6.32 以降)"
632 この操作を使うと、I/O が利用可能になったことを示すシグナルを、
633 特定のスレッド、プロセス、プロセスグループに送ることができる
652 で指定された値のスレッドにそのシグナルを送る
662 で指定された値のプロセスにそのシグナルを送る。
667 で指定された値のプロセスグループにそのシグナルを送る。
669 と異なり、プロセスグループ ID には正の値を指定する点に注意すること。)
672 .BR F_GETSIG " (\fIvoid\fP)"
673 入力や出力が可能になった場合に送るシグナルを
684 フラグ付きで設定すれば、ハンドラで追加の情報を得ることができる。
688 .BR F_SETSIG " (\fIlong\fP)"
689 入力や出力が可能になった場合に送るシグナルを
704 .\" The following was true only up until 2.6.11:
708 .\" に 0 以外の値を渡すと、シグナルの受信者をプロセス全体から
709 .\" プロセス内の特定のスレッドに変更される。詳細は
714 にゼロ以外の値を設定し、シグナルハンドラに
718 を参照) I/O イベントに関する追加の情報が
726 フィールドにはイベントに対応するファイルディスクリプタが入っている。
727 それ以外の場合は、どのファイルディスクリプタが利用可能かを示す情報は
728 ないので、どのファイルディスクリプタで I/O が可能かを判断するためには
740 同じシグナル番号を持つ複数の I/O イベントがキューに入ることがある
741 (キューに入れるかどうかは利用可能なメモリに依存している)。
744 が設定されている場合、シグナルハンドラのための追加の情報が得られる。
746 .\" See fs/fcntl.c::send_sigio_to_task() (2.4/2.6) sources -- MTK, Apr 05
748 Linux では一つのプロセスに対してキューに入れられるリアルタイム
757 シグナルは、指定されたスレッドではなくプロセス全体に送られる。
759 これらの機構を使用することで、ほとんどの場合で
763 を使用せずに完全な非同期 I/O を実装することができる。
768 の使用は BSD と Linux に特有である。
773 は Linux 固有である。POSIX には、同様のことを行うために、非同期 I/O と
775 構造体がある。Linux では、GNU C ライブラリ (Glibc) の一部として
782 が参照するオープンファイル記述に対して新しいリースを設定するのに使用される。
786 が参照するオープンファイル記述に対して設定されている
789 あるプロセス ("lease breaker") がそのファイルディスクリプタが参照
794 を行おうとした際に、リースを保持しているプロセス ("lease holder") へ
795 (シグナルの配送による) 通知が行われるという機構が提供される。
797 .BR F_SETLEASE " (\fIlong\fP)"
799 の内容に基いてファイルのリースの設定、削除を行う。整数
807 そのファイルが書き込み用にオープンされたり、ファイルが切り詰められた場合に、
808 呼び出し元のプロセスに通知が行われるようになる。
809 .\" 以下の内容はカーネル 2.6.10 で実装された。
810 .\" より詳しい情報は man-pages-2.09 の Changelog を参照。
811 読み出しリースを設定できるのは、読み出し専用でオープンされている
812 ファイルディスクリプタに対してのみである。
816 (読み出し用か書き込み用にかかわらず) そのファイルがオープンされたり、
817 ファイルが切り詰められた場合に、呼び出し元のプロセスに通知が行われるようになる。
818 書き込みリースは、そのファイルに対するオープンされたファイルディスクリプタが
825 リースはオープンファイル記述に対して関連付けられる
832 などにより作成された) ファイルディスクリプタの複製は同じリースを参照し、
833 複製も含めたどのファイルディスクリプタを使ってもこのリースを変更したり
835 また、これらのファイルディスクリプタのいずれかに対して
837 操作が明示的に実行された場合や、すべてのファイルディスクリプタが
840 リースの取得は通常のファイル (regular file) に対してのみ可能である。
841 非特権プロセスがリースを取得できるのは、UID (所有者) がプロセスの
842 ファイルシステム UID と一致するファイルに対してだけである。
844 ケーパビリティを持つプロセスは任意のファイルに対してリースを取得できる。
846 .BR F_GETLEASE " (\fIvoid\fP)"
849 に対して設定されているリースの種別を取得する。
850 .BR F_RDLCK ", " F_WRLCK ", " F_UNLCK
852 .BR F_RDLCK ", " F_WRLCK
853 はそれぞれ、読み出しリース、書き込みリースが設定されていることを示し、
855 はリースが何も設定されていないことを示す。
859 あるプロセス ("lease folder") が
866 そのシステムコールはカーネルによって停止され、
867 カーネルは lease holder にシグナル (デフォルトでは
870 lease holder はこのシグナルを受信したときにはきちんと対応すべきである。
871 具体的には、別のプロセスがそのファイルにアクセスするための準備として
872 必要な後片付け (例えば、キャッシュされたバッファのフラッシュ) を
873 すべて行ってから、そのファイルのリースの削除または格下げを行う。
881 lease holder がファイルに書き込みリースを保持していて、
882 lease breaker が読み出し用にそのファイルをオープンしている場合、
883 lease holder が保持しているリースを読み出しリースに格下げすれば
893 .I /proc/sys/fs/lease-break-time
894 で指定された秒数以内にリースの格下げか削除を行えなかった場合、
895 カーネルは強制的にその lease holder のリースを削除もしくは格下げを行う。
897 一度リースの削除か格下げが自発的もしくは強制的に行われると、
898 lease breaker がまだシステムコールを再開していない場合には、
899 カーネルが lease breaker のシステムコールの続行を許可する。
905 が停止中にシグナルハンドラにより中断された場合、
913 が停止中に lease breaker がシグナルにより kill された場合、
919 フラグを指定した場合、そのシステムコールは
921 エラーで直ちに失敗するが、上で述べた他の処理はそのまま行われる。
923 lease holder への通知に使われるデフォルトのシグナルは
935 フラグ付きでシグナルハンドラが設定されている場合には、
940 フィールドには別のプロセスがアクセスしたリース設定済みファイルの
942 (この機能は複数のファイルに対してリースを設定する場合に有用である)。
943 .SS "ファイルやディレクトリの変更の通知 (dnotify)"
945 .BR F_NOTIFY " (\fIlong\fP)"
948 で参照されるディレクトリか、その中にあるファイルに変更があった場合に
953 はビットマスクで、以下のビットの 0個以上の論理和をとったものを指定する。
959 ファイルへのアクセスがあった (read, pread, readv)
962 ファイルの内容が変更された (write, pwrite, writev, truncate, ftruncate).
965 ファイルが作成された (open, creat, mknod, mkdir, link, symlink, rename).
968 ファイルが削除 (unlink) された (unlink, 別のディレクトリへの rename, rmdir)
971 ディレクトリ内でのファイル名の変更があった (rename)
974 ファイル属性が変更された (chown, chmod, utime[s])
980 機能検査マクロを定義しなければならない。)
982 ディレクトリの変更通知は通常「一回限り (one-shot)」であり、
983 アプリケーション側でその後さらに通知を受信したい場合は
989 変更通知は明示的に解除されるまで有効状態が継続する。
991 .\" 以下は API の設計がまずいと思うのだが...
995 で指定されたイベントがすでにモニタされている
1013 フラグ付きでシグナルハンドラが設定されている場合には)
1018 フィールドには通知の行われたファイルディスクリプタが入っている
1019 (この機能は複数のディレクトリに対して通知を設定する場合に有用である)。
1023 を使う場合は、通知にはリアルタイムシグナルを使うべきである。
1024 それは、リアルタイムシグナルを使うことで、複数の通知をキューに入れる
1028 新しくアプリケーションを書く際には、(カーネル 2.6.13 以降で利用可能となった)
1032 はファイルシステムイベントの通知を取得するための
1037 成功した場合の返り値は操作の種類により違う:
1043 ファイルディスクリプタ・フラグの値を返す。
1049 ファイルディスクリプタに対して保持されているリースの種別を返す。
1055 読み込みや書き出しが可能になった時に送られるシグナルの値、もしくは
1067 .BR EACCES " か " EAGAIN
1068 他のプロセスが保持しているロックによって操作が禁止されている。
1071 そのファイルは他のプロセスによってメモリ・マップされているため、
1076 がオープンされたファイルディスクリプタでない。
1081 だったが、対象のファイルディスクリプタのオープンモードが
1082 必要となるロックの型にマッチしていない。
1087 コマンドを実行した場合にはデッドロックになることが検出された。
1098 .BR F_GETLK " と " F_SETLK
1099 の場合、ロックを確認したり取得したりする前にシグナルによって割り込まれた。
1100 これはたいていリモートのファイルをロックする場合
1101 (例えば NFS 上でロックする場合) に起こる。
1107 が負か、もしくは許される最大値よりも大きい。
1115 プロセスがすでに最大数までファイルディスクリプタをオープンしている。
1118 オープンされているロックの数が多過ぎて、ロック・テーブルがいっぱいである。
1119 または remote locking protocol (例えば NFS 上のロック) が失敗した。
1126 SVr4, 4.3BSD, POSIX.1-2001.
1127 POSIX.1-2001 で規定されている操作は、
1141 は POSIX.1-2008 で規定されている。
1150 は Linux 固有である (これらの定義を有効にするには
1154 .\" SVr4 には他に EFAULT, EINTR, EIO, ENOLINK, EOVERFLOW エラー状態についての
1167 が設定するロック種別の間に相互作用はない。
1171 に上記以外のフィールドがあるものもある (例えば
1173 .\" e.g., Solaris 8 documents this field in fcntl(2), and Irix 6.5
1174 .\" documents it in fcntl(5). mtk, May 2007
1175 はっきりと言えることは、ロックを保持しているプロセスが別のマシンに存在
1178 だけはあまり役にたたないだろうということである。
1180 いくつかのアーキテクチャ (特に i386) における Linux システムコールの慣習
1183 が返す (負の) プロセスグループID が \-1 から \-4095 の範囲に入った場合、
1184 glibc はこの返り値をシステムコールでエラーが起こったと
1189 には (正の) プロセスグループID が設定されることになる。
1195 .\" mtk, Dec 04: alpha と ia64 では、少しテストしてみた限り、
1196 .\" 「どんな」負の PGID でも F_GETOWN でエラーが起こったと間違って
1197 .\" 解釈されてしまうようだ。他のいくつかのアーキテクチャでは、
1198 .\" i386 と同様の範囲のチェックが行われているようだ。
1200 Linux 2.4 以前では、非特権プロセスが
1202 を使って、ソケットのファイルディスクリプタの所有者に
1203 呼び出し元以外のプロセス (やプロセスグループ) を指定すると
1205 呼び出し元が所有者として指定したプロセス (やプロセスグループ) に
1206 シグナルを送る許可を持っていたとしても、
1213 このエラーが返ったにもかかわらず、ファイルディスクリプタの所有者
1214 は設定され、シグナルはその所有者に送られる。
1216 これまでの Linux の全てのバージョンにおける強制ロックの実装は、
1217 競合条件下で強制ロックが不完全になるような場合がある。
1218 .\" http://marc.info/?l=linux-kernel&m=119013491707153&w=2
1221 の呼び出しは強制ロックが獲得された後にもデータを変更することができる。
1224 の呼び出しは強制ロックが獲得された後になって行われたデータの変更を
1228 の間にも存在する。それゆえ、強制ロックに頼るのはお薦めできない。
1235 .BR capabilities (7),
1236 .BR feature_test_macros (7)
1239 .IR Documentation/filesystems/
1242 .IR mandatory-locking.txt ,
1245 (以前のカーネルでは、これらのファイルは
1248 .I mandatory-locking.txt