標準
標準/拡張機能 |
C/C++ |
依存項目 |
z/OS® UNIX |
両方 |
OS/390 V2R8 |
一般形式
#define _OPEN_SYS
#include <termios.h>
int w_ioctl(int fildes, int cmd, int arglen, void *arg);
int __w_pioctl(const char *pathname, int cmd, int arglen, void *arg);
ACL 形式:
#define _OPEN_SYS
#include <termios.h>
#include <sys>
int w_ioctl(int fildes, int cmd, int arglen, void arg);
int __w_pioctl(const char pathname, int cmd, int arglen, void arg);
機能説明
w_ioctl() および __w_pioctl() 関数は、装置固有コマンドの一般エントリー・ポイントです。w_ioctl() と __w_pioctl() で指定さ
れるアクションは装置によって異なり、装置ドライバーによって定義
されます。
- fildes
- (w_ioctl で使用される) オープン文字特殊ファイルの記述子。
- pathname
- (__w_pioctl で使用される) ファイルのパス名。
- cmd
- 装置ドライバーに渡されるコマンドで、整数値として指定されて
います。
- コマンド
- 説明
- SIOCGPARTNERINFO
- アプリケーションがそのパートナーに関するセキュリティー情報を取り出すためのインターフェースを提供します。詳細は、「」を参照してください。z/OS V2R2.0 Communications Server: IP Programmer's Guide and Reference.
- arglen
- 装置ドライバーに渡される引数の長さ。
- arg
- 装置ドライバーに渡される引数が保管されるバッファーの
アドレス。
w_ioctl() と __w_pioctl() は、cmd、arglen、および arg 引数を装置ドライバーに渡し、解釈および処理を
行います。w_ioctl() と __w_pioctl() が正常に終了すると、適正であれば、装
置ドライバーが arglen と arg を戻します。
注: __w_pioctl() 関数は、拡張 ASCII の拡張機能のレベルに依存します。詳細は、
拡張 ASCII サポートを参照してください。
戻り値
w_ioctl() は、正常に実行された場合は 0 を戻します。
正常に実行されなかった場合、w_ioctl() は -1 を戻して、errno を次のいずれかの
値に設定します。
- エラー・コード
- 説明
- EACCES
- 許可が拒否されました。
- EINVAL
以下のいずれかの状態が発生しました。
- 正しくない長さが arglen に指定されました。正しい引数長の範囲は 0 ~ 50,000 までです。
- コマンド _IOCC_REGFILEINT が使用されたときに、無効なメッセージ・キューが指定されました。
- ENAMETOOLONG
- pathname 引数の長さが
PATH_MAX を超えているか、もしくは
pathname コンポーネントが
NAME_MAX よりも長く、そのファイルに対して
{_POSIX_NO_TRUNC} が有効です。シンボリック・リンクの場合、シンボリック・リンクの代わりに使われる
パス名のストリングの長さが PATH_MAX を超えています。PATH_MAX と NAME_MAX の値は、pathconf() を使用して判別することができます。
- ENODEV
- 装置は存在していません。この関数は装置ドライバーによってサポートされません。
- ENOENT
- pathname という名前のファイルが存在しないか、または
pathname が空ストリングです。
- ENOTDIR
- pathname の接頭部のコンポーネントが
ディレクトリーではありません。
- ENOTSUP
-
サポートされていない命令。次の状態が発生しました。
コマンド _IOCC_REGFILEINT が使用され、fildes (w_ioctl) または pathname (__w_pioctl) は、zFS と共にシスプレックス内で共有されているか NFS クライアントを介してアクセスしている、R/W ファイル・システムに常駐するファイルを参照しています。これらの場合、ローカル・システムに認識されることなく、ファイルをリモート・システムで変更できます。プログラムは通知を受け取らないため、この命令は拒否されます。
__errno2() を使用して、詳しい診断情報を取得してください。
- ENOTTY
- 正しくないファイル記述子が指定されました。fildes は文字特殊ファイルではありませんでした。
ACL の説明
w_ioctl() および __w_pioctl() 関数は、SETFACL および GETFACL HFS コマンドの一般エントリー・ポイントです。SETFACL は、情報をアクセス制御リスト内に設定するために使用します。GETFACL は、情報をアクセス制御リストから検索するために使用します。
- fildes
- (w_ioctl で使用される) オープン文字特殊ファイルの記述子。
- pathname
- (__w_pioctl で使用される) ファイルのパス名。
- cmd
- 整数値として装置ドライバーに渡されるコマンドで、SETFACL か GETFACL のいずれかです。
- arglen
- HFS 装置ドライバーに渡されるユーザー・バッファーの長さで、1 ~ 50,000 バイト
までの値として指定されています。arglen は、struct ACL_buf と struct ACL_entrys の配列を結合したサイズです。
- arg
- arg は、すぐあとに struct ACL_entrys の配列が続く struct ACL_buf によってマップ
されるユーザー・バッファーを指定します。ACL_buf および ACL_entrys についての詳細は、「z/OS UNIX System Services プログラミング: アセンブラー呼び出し可能サービス 解説書」を参照してください。
w_ioctl() と __w_pioctl() は、cmd、arglen、および arg 引数を装置ドライバーに渡し、解釈および処理を
行います。w_ioctl() と __w_pioctl() が正常に終了すると、適正であれば、装
置ドライバーが arglen と arg を戻します。
ACL 戻り値
w_ioctl() は、正常に実行された場合は 0 を戻します。
正常に実行されなかった場合、w_ioctl() は -1 を戻して、errno を次のいずれかの
値に設定します。
- エラー・コード
- 説明
- EBADF
- fildes パラメーターが、正しいファイル記述子ではありません。
- EINVAL
- 要求が無効か、またはサポートされていません。
- EMVSPARM
- 無効なパラメーターがサービスに渡されました。
- ENODEV
- 装置が正しくありません。この関数は装置ドライバーによってサポートされません。
例
CELEBW34 ⁄* CELEBW34
This example shows a general entry point for device-specific commands.
*⁄
#include <termios.h>
#include <stdio.h>
main() {
char buf[256];
int ret;
memset(buf, 0x00, sizeof(buf));
if ((ret = w_ioctl(0, 1, sizeof(buf), buf)) != 0)
perror("w_ioctl() error");
else
printf("w_iotctl() returned '%s'¥n", buf);
}
出力: w_ioctl() error: Invalid argument
注: w_ioctl() はファイル・システム装置ドライバーによって
異なります。