MKFIFO(3) | Linux Programmer's Manual | MKFIFO(3) |
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():
mkfifo() は名前 pathname を持つFIFOスペシャルファイルを作成 する。FIFOの許可モードは mode で指定され、プロセスの umask によって通常の方式で変更を受ける: 作成されたファイルの許可 モードは (mode & ~umask) となる。
FIFOスペシャルファイルはパイプに似ているが、作成のされ方のみが異なって いる。FIFOスペシャルファイルは名前のない通信路ではなく、 mkfifo() の呼び出しによりファイルシステムの中に加えられる。
ひとたびこのようにしてFIFOスペシャルファイルが作成されると、通常のファ イルと同じように、どのプロセスからでも読み出し、書き込み用にこれをオー プンすることができる。ただし、これに対する全ての入出力操作に先立って その両端がオープンされている必要がある。FIFOを読み出し用にオープンする と、通常他のプロセスによって同じFIFOが書き込み用にオープンされるまでブ ロックされ、逆の場合も同様である。 FIFOスペシャルファイルをブロックせずに扱う方法については fifo(7) を参照のこと。
mkfifoat() システムコールは mkfifo() と全く同様に動作するが、以下で説明する点が異なる。
pathname で指定されたパス名が相対パスの場合、このパス名はファイルディスクリプター dirfd が参照するディレクトリに対する相対パスと解釈される (mkfifo() に相対パス名を渡した場合のように、呼び出したプロセスのカレントワーキングディレクトリに対する相対パスではない)。
pathname で指定されたパス名が相対パスで、 dirfd が特別な値 AT_FDCWD の場合、 (mkfifo() と同様に) pathname は呼び出したプロセスのカレントワーキングディレクトリに対する相対パスと解釈される。
pathname で指定されたパス名が絶対パスの場合、 dirfd は無視される。
成功した場合 mkfifo() と mkfifoat() は 0 を返す。 エラーの場合 -1 を返す (また errno が適切に設定される)。
mkfifoat() では以下のエラーも発生する。
mkfifoat() は glibc 2.4 で追加された。これは、カーネル 2.6.16 以降の Linux で利用できる mknodat(2) を使って実装されている。
関数 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/ に書かれている。
2014-03-24 | GNU |