Provided by: manpages-ja-dev_0.5.0.0.20210215+dfsg-1_all bug

名前

       mkfifo, mkfifoat - FIFOスペシャルファイル(名前付きパイプ)を作成する

書式

       #include <sys/types.h>
       #include <sys/stat.h>

       int mkfifo(const char *pathname, mode_t mode);

       #include <fcntl.h>           /* AT_* 定数の定義 */
       #include <sys/stat.h>

       int mkfifoat(int dirfd, const char *pathname, mode_t mode);

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

       mkfifoat():
           glibc 2.10 以降:
               _XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L
           glibc 2.10 より前:
               _ATFILE_SOURCE

説明

       mkfifo()  は名前 pathname を持つFIFOスペシャルファイルを作成 する。FIFOの許可モードは mode で指定され、プ
       ロセスの umask によって通常の方式で変更を受ける: 作成されたファイルの許可 モードは (mode &  ~umask)  とな
       る。

       FIFOスペシャルファイルはパイプに似ているが、作成のされ方のみが異なって いる。FIFOスペシャルファイルは名前
       のない通信路ではなく、 mkfifo()  の呼び出しによりファイルシステムの中に加えられる。

       ひとたびこのようにしてFIFOスペシャルファイルが作成されると、通常のファ イルと同じように、どのプロセスから
       でも読み出し、書き込み用にこれをオー プンすることができる。ただし、これに対する全ての入出力操作に先立って
       その両端がオープンされている必要がある。FIFOを読み出し用にオープンする     と、通常他のプロセスによって同
       じFIFOが書き込み用にオープンされるまでブ   ロックされ、逆の場合も同様である。  FIFOスペシャルファイルをブ
       ロックせずに扱う方法については fifo(7)  を参照のこと。

   mkfifoat()
       mkfifoat() システムコールは mkfifo() と全く同様に動作するが、以下で説明する点が異なる。

       pathname で指定されたパス名が相対パスの場合、このパス名はファイルディスクリプター dirfd  が参照するディレ
       クトリに対する相対パスと解釈される (mkfifo() に相対パス名を渡した場合のように、呼び出したプロセスのカレン
       トワーキングディレクトリに対する相対パスではない)。

       pathname で指定されたパス名が相対パスで、 dirfd が特別な値 AT_FDCWD の場合、 (mkfifo() と同様に) pathname
       は呼び出したプロセスのカレントワーキングディレクトリに対する相対パスと解釈される。

       pathname で指定されたパス名が絶対パスの場合、 dirfd は無視される。

返り値

       成功した場合  mkfifo()  と  mkfifoat()  は 0 を返す。 エラーの場合 -1 を返す (また errno が適切に設定され
       る)。

エラー

       EACCES pathname の中のディレクトリの一つに対し検索(実行)許可がない。

       EDQUOT ディスクブロックか inode がそのファイルシステムのユーザークォータに達していた。

       EEXIST pathname がすでに存在する。 これには pathname がシンボリックリンクである場合も含まれる (シンボリッ
              クリンクがリンク切れか (dangling) どうかは関係ない)。

       ENAMETOOLONG
              pathname  の長さが  PATH_MAX  を超えているか、個々のファイル  名部分の長さが  NAME_MAX  を超えてい
              る。GNUシステムにおいては、ファ イル名の全体の長さに対しては制限は課せられていないが、ファイルシス
              テム によっては各部分の長さに制限のある可能性がある。

       ENOENT pathname 中のディレクトリ部分が存在しない、 もしくはリンク先の無いシンボリックリンクである。

       ENOSPC ディレクトリまたはファイルシステムに新規ファイルを作成する余地がない。

       ENOTDIR
              pathname 中のディレクトリ要素が、実際にはディレクトリでない。

       EROFS  pathname が読み取り専用のファイルシステムを指している。

       mkfifoat() では以下のエラーも発生する。

       EBADF  dirfd が有効なファイルディスクリプターでない。

       ENOTDIR
              pathname が相対パスで、 dirfd がディレクトリ以外のファイルを参照しているファイルディスクリプターで
              ある。

バージョン

       mkfifoat() は glibc 2.4 で追加された。これは、カーネル 2.6.16 以降の Linux で利用できる mknodat(2) を使っ
       て実装されている。

属性

   マルチスレッディング (pthreads(7) 参照)
       関数 mkfifo() と mkfifoat() はスレッドセーフである。

準拠

       mkfifo(): POSIX.1-2001, POSIX.1-2008.

       mkfifoat(): POSIX.1-2008.

関連項目

       mkfifo(1), close(2), open(2), read(2), stat(2), umask(2), write(2), fifo(7)

この文書について

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