fattach() - ファイル・システム・ネーム・スペースのファイルへの STREAMS 方式のファイル記述子の付加

標準

標準/拡張機能 C/C++ 依存項目

XPG4.2
Single UNIX Specification、バージョン 3

両方  

形式

#define _XOPEN_SOURCE_EXTENDED 1
#include <stropts.h>

int fattach(int fildes, const char *path);

機能説明

fattach() 関数は、STREAMS ベースのファイル記述子をファイルに付加し、パス名を有効に fildes に関連付けます。 fildes 引数は、STREAMS ファイルに関連付けられた有効なオープン・ファイル記述子でなければなりません。path 引数は、既存ファイルのパス名を指します。プロセスは、適切な特権を持つか、または path で示された名前を持つファイルの所有者であり、かつ書き込み許可を持っていなければなりません。fattach() の呼び出しに成功した場合、path で指定したファイルから STREAMS ファイルが切り離されるまで、そのファイルを示すすべてのパス名が、fildes に関連した STREAMS ファイルを示すようになります。STREAMS ファイルを複数のファイルへ接続することができ、それに関連するいく つかのパス名を持つこともできます。

指定された STREAMS ファイルの属性は以下のように初期化されます。許可、ユーザー ID、グループ ID、および時間は path で示される名 前を持つファイルと同じ値に設定され、リンク数は 1 に設定され、かつ 装置 ID は fildes に関連する STREAMS ファイルと同じ値に設定さ れます。指定された STREAMS ファイルのいずれの属性が、その後 (例えば、chmod() によって) 変更されても、基礎ファイルの属性や、fildes が 参照する STREAMS ファイルの属性には影響を与えません。

基礎ファイルを参照するファイル記述子は、fattach() 呼び出しの前に オープンされ、基礎ファイルを参照し続けます。

戻り値

正常に実行された場合、fattach() は 0 を戻します。

正常に実行されなかった場合、fattach() は -1 を戻して、errno を次のいずれかの 値に設定します。
注: z/OS®UNIX サービスは、どのような STREAMS 装置または疑似装置も提 供しません。fattach() が STREAMS ベースのファイル記述子をファイルに付加する ことはあり得ません。常に -1 が戻され、失敗を示す errno が設定されます。詳細は、open() — ファイルのオープンを参照してください。
エラー・コード
説明
EACCES
パス接頭部のコンポーネントに対して検索許可を拒否します。またはそのプロセ スは path の所有者であるが、path によって指定されたファイルへの書き込み許可は持ちません。
EBADF
fildes 引数は、有効なオープン・ファイル記述子では ありません。
EBUSY
path によって指定されたファイルは、現在マウント・ポイントにあります。あるいは、STREAMS ファイルが接続されています。
EINVAL
fildes 引数は STREAMS ファイルを参照しません。
ELOOP
path の解析中に検出されたシンボリック・リンクが多すぎます。
ENAMETOOLONG
path のサイズが PATH_MAX を超えているか 、path のコンポーネントが NAME_MAX より長いか、シンボリック・リンクのパス名の解析で PATH_MAX を超える長さの 中間結果が生成されました。
ENOENT
path のコンポーネントが既存ファイルの名前を指定していないか、または path が空ストリングです。
ENOTDIR
パス接頭部のコンポーネントがディレクトリーではありません。
EPERM
プロセスの有効ユーザー ID が path で指定されたファイ ルの所有者でなく、かつプロセスは適切な特権を持っていません。

関連情報