.\" This manpage is Copyright (C) 1995 James R. Van Zandt <jrv@vanzandt.mv.com>
+.\" and Copyright (C) 2006, 2014 Michael Kerrisk
.\"
.\" %%%LICENSE_START(VERBATIM)
.\" Permission is granted to make and distribute verbatim copies of this
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH MKFIFO 3 2013\-01\-27 GNU "Linux Programmer's Manual"
+.\"
+.\" Japanese Version Copyright (c) 1998 George Momma
+.\" all rights reserved.
+.\" Translated Mon May 25 23:11:03 JST 1998
+.\" by George Momma <momma@wakhok.ac.jp>
+.\" Updated 1999-12-11 by Kentaro Shirakata <argrath@ub32.org>
+.\" Updated 2008-07-30 by Kentaro Shirakata <argrath@ub32.org>
+.\" Updated 2013-05-06, Akihiro MOTOKI <amotoki@gmail.com>
+.\"
+.TH MKFIFO 3 2014\-03\-24 GNU "Linux Programmer's Manual"
.SH 名前
-mkfifo \- FIFOスペシャルファイル(名前付きパイプ)を作成する
+mkfifo, mkfifoat \- FIFOスペシャルファイル(名前付きパイプ)を作成する
.SH 書式
.nf
\fB#include <sys/types.h>\fP
\fB#include <sys/stat.h>\fP
.sp
\fBint mkfifo(const char *\fP\fIpathname\fP\fB, mode_t \fP\fImode\fP\fB);\fP
+.sp
+\fB#include <fcntl.h> \fP/* AT_* 定数の定義 */
+\fB#include <sys/stat.h>\fP
+.sp
+\fBint mkfifoat(int \fP\fIdirfd\fP\fB, const char *\fP\fIpathname\fP\fB, mode_t \fP\fImode\fP\fB);\fP
.fi
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照):
+.in
+.sp
+\fBmkfifoat\fP():
+.PD 0
+.ad l
+.RS 4
+.TP 4
+glibc 2.10 以降:
+_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+.TP
+glibc 2.10 より前:
+_ATFILE_SOURCE
+.RE
+.ad
+.PD
.SH 説明
\fBmkfifo\fP() は名前 \fIpathname\fP を持つFIFOスペシャルファイルを作成 する。FIFOの許可モードは \fImode\fP
で指定され、プロセスの \fBumask\fP によって通常の方式で変更を受ける: 作成されたファイルの許可 モードは \fB(\fP\fImode\fP\fB &
プンすることができる。ただし、これに対する全ての入出力操作に先立って その両端がオープンされている必要がある。FIFOを読み出し用にオープンする
と、通常他のプロセスによって同じFIFOが書き込み用にオープンされるまでブ ロックされ、逆の場合も同様である。
FIFOスペシャルファイルをブロックせずに扱う方法については \fBfifo\fP(7) を参照のこと。
+.SS mkfifoat()
+\fBmkfifoat\fP() システムコールは \fBmkfifo\fP() と全く同様に動作するが、以下で説明する点が異なる。
+
+\fIpathname\fP で指定されたパス名が相対パスの場合、このパス名はファイルディスクリプター \fIdirfd\fP
+が参照するディレクトリに対する相対パスと解釈される (\fBmkfifo\fP()
+に相対パス名を渡した場合のように、呼び出したプロセスのカレントワーキングディレクトリに対する相対パスではない)。
+
+\fIpathname\fP で指定されたパス名が相対パスで、 \fIdirfd\fP が特別な値 \fBAT_FDCWD\fP の場合、 (\fBmkfifo\fP()
+と同様に) \fIpathname\fP は呼び出したプロセスのカレントワーキングディレクトリに対する相対パスと解釈される。
+
+\fIpathname\fP で指定されたパス名が絶対パスの場合、 \fIdirfd\fP は無視される。
.SH 返り値
-成功した場合 \fBmkfifo\fP() は 0 を返す。 エラーの場合 \-1 を返す (また \fIerrno\fP が適切に設定される)。
+成功した場合 \fBmkfifo\fP() と \fBmkfifoat\fP() は 0 を返す。 エラーの場合 \-1 を返す (また \fIerrno\fP
+が適切に設定される)。
.SH エラー
.TP
\fBEACCES\fP
\fIpathname\fP の中のディレクトリの一つに対し検索(実行)許可がない。
.TP
\fBEDQUOT\fP
-The user's quota of disk blocks or inodes on the file system has been
-exhausted.
+ディスクブロックか inode がそのファイルシステムのユーザクォータに達していた。
.TP
\fBEEXIST\fP
\fIpathname\fP がすでに存在する。 これには \fIpathname\fP がシンボリックリンクである場合も含まれる
.TP
\fBEROFS\fP
\fIpathname\fP が読み取り専用のファイルシステムを指している。
+.PP
+\fBmkfifoat\fP() では以下のエラーも発生する。
+.TP
+\fBEBADF\fP
+\fIdirfd\fP が有効なファイルディスクリプタでない。
+.TP
+\fBENOTDIR\fP
+\fIpathname\fP が相対パスで、 \fIdirfd\fP がディレクトリ以外のファイルを参照しているファイルディスクリプタである。
+.SH バージョン
+\fBmkfifoat\fP() は glibc 2.4 で追加された。これは、カーネル 2.6.16 以降の Linux で利用できる
+\fBmknodat\fP(2) を使って実装されている。
+.SH 属性
+.SS "マルチスレッディング (pthreads(7) 参照)"
+関数 \fBmkfifo\fP() と \fBmkfifoat\fP() はスレッドセーフである。
.SH 準拠
-POSIX.1\-2001.
+\fBmkfifo\fP(): POSIX.1\-2001, POSIX.1\-2008.
+
+\fBmkfifoat\fP(): POSIX.1\-2008.
.SH 関連項目
\fBmkfifo\fP(1), \fBclose\fP(2), \fBopen\fP(2), \fBread\fP(2), \fBstat\fP(2), \fBumask\fP(2),
-\fBwrite\fP(2), \fBmkfifoat\fP(3), \fBfifo\fP(7)
+\fBwrite\fP(2), \fBfifo\fP(7)
.SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.67 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man\-pages/ に書かれている。