openpty - ライブラリコールの説明 - Linux コマンド集 一覧表
- 名前
- 書式
- 説明
- 返り値
- エラー
- 注意
- 準拠
- バグ
- 関連項目
名前
openpty, login_tty, forkpty - 端末 (tty) ユーティリティ関数
書式
#include <pty.h>
/* openpty と forkpty 用 */
#include <utmp.h>
/* login_tty 用 */
int openpty(int *
amaster
, int *
aslave
, char *
name
, struct termios *
termp
, struct winsize *
winp
);
int login_tty(int
fd
);
pid_t forkpty(int *
amaster
, char *
name
, struct termios *
termp
, struct winsize *
winp
);
-lutil でリンクする。
説明
openpty
()関数は、使用可能な疑似端末 (pseudo-terminal) を見つけて、
マスタとスレーブのファイル・ディスクリプタを
amaster
と
aslave
に入れて返す。
name
が NULL でない場合、スレーブのファイル名が
name
に返される。
termp
が NULL でない場合、スレーブの端末パラメータは
termp
の値に設定される。
winp
が NULL でない場合、スレーブのウインドウサイズは
winp
に設定される。
login_tty
()関数は、端末
fd
にログインする準備をする
(
fd
は実際の端末デバイスでも、
openpty
()で返される疑似端末のスレーブでもよい)。
具体的には、新しいセッションを作成し、
fd
をカレント・プロセスの制御端末とし、
カレント・プロセスの標準入力・標準出力・標準エラーのストリームを
fd
に設定した後、
fd
をクローズする。
forkpty
()関数は
openpty
(),
fork
(),
login_tty
()を組み合わせ、疑似端末を操作する新しいプロセスを生成する。
疑似端末のマスタ側のファイル・ディスクリプタは
amaster
に返され、
name
が NULL でない場合には、スレーブのファイル名が
name
に返される。
termp
と
winp
パラメータは、NULL でなければ、
疑似端末のスレーブ側の端末属性とウインドウサイズを決定する。
返り値
openpty
(),
login_tty
(),
forkpty
()の呼び出しが成功しなかった場合、
-1 が返されて、
errno
はエラーを示す値に設定される。
成功した場合、
openpty
(),
login_tty
()および
forkpty
()の子プロセスは 0 を返し、
forkpty
()の親プロセスは子プロセスのプロセス ID を返す。
エラー
以下の場合に
openpty
()は失敗する:
-
ENOENT
-
使用可能な端末がない。
ioctl
()が
fd
をカレントプロセスの制御端末に設定するのに失敗した場合、
login_pty
()は失敗する。
openpty
()または
fork
()のどちらかが失敗した場合、
forkpty
()は失敗する。
注意
これらの関数は libutil に含まれている。したがって、コンパイル時の
オプションに
-lutil
を加える必要がある。
2.0.92 より前のバージョンの glibc では、
openpty
()は BSD 疑似端末ペアのファイル・ディスクリプタを返す。
2.0.92 以降の glibc では、
openpty
()はまず Unix 98 疑似端末ペアをオープンしようとし、それに失敗した場合に
BSD 疑似端末ペアのオープンへと移行する。
準拠
これらは BSD の関数であり、libc5 と glibc2 に存在する。
バグ
誰も
name
に対してどのくらい大きさを予約しておけばいいか分からない。
したがって、NULL でない
name
を引き数として
openpty
()や
forkpty
()を呼び出すのは安全であるとは言えない。
関連項目
- Linux Tips 関連記事
- Linux Tips(目次)
- Linux ディストリビューション一覧
- rpm のファイル名にあるi386とかi686とは
- 自分のマシンの情報を調べる
- cron の設定
- ssh の root ログインを禁止する
- ssh を、ユーザ、IPでアクセス制限
- 鍵交換方式によるssh接続
- 鍵交換方式によるssh接続( windowsから )
- 複数ファイル内の文字列を置換して上書き保存する
- あるグループをイニシャルグループとするユーザー一覧出力
- 複数ファイルのファイル名を一括変換する
- 連番ファイルをコマンド一発で作成する
- 中身がランダムなファイルを任意のサイズで作成する
- Linux ユーザーアカウントをロック・アンロックする