本文に進む 日本−日本語
日本HPホーム 製品とサービス お客様サポート/ ダウンロード ソリューション ご購入の方法
≫ お問い合わせ
詳細検索オプション
日本HPホーム
HP-UX リファレンス: セクション 3 : ライブラリ (N~Z) > p

ptsname(3C)

HP-UX 11i Version 2: September 2004
≫ 

テクニカル ドキュメント

PDF版
フィードバック
ここから本文が始まります

 ≫ 目次

 ≫ 索引

名称

ptsname, ptsname_r ― スレーブ pty のパス名の取得 (pseudo-terminal)

構文

#include <stdlib.h>

char * ptsname (int fildes);

char * ptsname_r (int fildes, char *slavename, int len);

特記事項

ptsname() および ptsname_r() は、STREAMS pty をサポートし ( ptm(7) および pts(7) を参照)、 また、別のデバイス命名規則を持っている 非 STREAMS pty ( pty(7) を参照) もサポートしています。 STREAMS pty は、オプションの機能であり、そのシステムがインストールされている場合のみサポートされます。

ptsname() および ptsname_r() が使用できるのは、pty の命名規則に insf(1M) を採用しているシステムに限られます。

説明

パラメータ fildes は、開いているマスター pty のファイル記述子です。 ptsname() は、スレーブ pty に、マスター pty に対応する名前を付けます。 したがって、両者のマイナー番号は同じになります。

ptsname_r() は、 ptsname() 関数のリエントラント版です。入力パラメータ slavename は、結果として null で終了するスレーブ pty のパス名が格納される文字配列へのポインタです。 入力パラメータ len は、この文字配列の長さを示しています。少なくとも 32 バイトの長さでなければなりません。

戻り値

ptsname() は、正常終了するとスレーブ pty のフルパス名を格納した文字列を返します。 異常終了すると NULL ポインタを返します。 戻り値が静的データ領域を指すこともありますが、これは ptsname() を呼び出すたびにオーバライトされるので、保存したいときはあらかじめコピーしておいてください。

正常終了の場合は、 ptsname_r() は、 slavename パラメータが指す文字配列の中に結果のスレーブ名を格納し、 値 0 を返します。 異常終了の場合は、値 -1 を返します。

エラー

ptsname() は次の条件のいずれかを満たす場合に異常終了し、 NULL ポインタを返します。

  • ファイル記述子が開いているマスター pty のものでない場合

  • 要求が pty ネームスペースを超える場合

  • Pty のデバイスの命名規則が採用されていない場合

  • マスターに対応する pty が見つからなかった場合

ptsname_r() もまた、上述の条件のいずれかを満たす場合に異常終了しますが、-1 を返し ENXIOerrno に設定します。

ptsname_r() は、 slavename パラータが無効または len パラメータが小さ過ぎる場合、-1 を返し ERANGEerrno に設定します。

次の例では、pty clone をオープンして取得したマスター pty に対応するスレーブ pty のパス名を、非 STREAMS pty が取得するために ptsname() を使用する典型的な方法を示しています。

int fd_master; 
char *path; 
   ...
 
     fd_master = open("/dev/ptym/clone", O_RDONLY); 
     path = ptsname(fd_master); 

次の例は、 STREAMS マスター pty に対応する STREAMS スレーブ pty のパス名を取得するのに ptsname() が使用される典型的な方法を示しています。

int fd_master, fd_slave; 
char *slave; 
   ...
 
     fd_master = open("/dev/ptmx", O_RDWR); 
     grantpt(fd_master); 
     unlockpt(fd_master); 
     slave = ptsname(fd_master); 
     fd_slave = open(slave, O_RDWR); 
     ioctl(fd_slave, I_PUSH, "ptem"); 
     ioctl(fd_slave, I_PUSH, "ldterm"); 

著者

ptsname() および ptsname_r() は、HP および OSF で開発されました。

印刷用画面へ
プライバシー 本サイト利用時の合意事項
© 1983-2004 Hewlett-Packard Development Company, L.P.