EN JA
MKFIFO(3)
MKFIFO(3) Linux Programmer's Manual MKFIFO(3)

名前

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

書式


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

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

説明

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

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

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

返り値

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

エラー

EACCES
pathname の中のディレクトリの一つに対し検索(実行)許可がない。
EDQUOT
The user's quota of disk blocks or inodes on the file system has been exhausted.
EEXIST
pathname がすでに存在する。これには pathname がシンボリックリンクである場合も含まれる (シンボリックリンクがリンク切れか (dangling) どうかは関係ない)。
ENAMETOOLONG
pathname の長さが PATH_MAX を超えているか、個々のファイル名部分の長さが NAME_MAX を超えている。GNUシステムにおいては、ファイル名の全体の長さに対しては制限は課せられていないが、ファイルシステムによっては各部分の長さに制限のある可能性がある。
ENOENT
pathname 中のディレクトリ部分が存在しない、もしくはリンク先の無いシンボリックリンクである。
ENOSPC
ディレクトリまたはファイルシステムに新規ファイルを作成する余地がない。
ENOTDIR
pathname 中のディレクトリ要素が、実際にはディレクトリでない。
EROFS
pathname が読み取り専用のファイルシステムを指している。

準拠

POSIX.1-2001.

関連項目

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

この文書について

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