218c6b4b9b
which has some variation of writing in Japanese, as well as some typos. Submitted by: kano@na.rim.or.jp Approved by: kuriyama (mentor/implicitly)
144 lines
3.8 KiB
Groff
144 lines
3.8 KiB
Groff
.\"
|
|
.\" Copyright (c) 1996 Joerg Wunsch
|
|
.\"
|
|
.\" All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
|
|
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
.\"
|
|
.\" %FreeBSD: src/lib/libutil/pty.3,v 1.8.2.3 2001/12/17 10:08:32 ru Exp %
|
|
.\" $FreeBSD$
|
|
.\" "
|
|
.Dd December 29, 1996
|
|
.Os
|
|
.Dt PTY 3
|
|
.Sh 名称
|
|
.Nm openpty ,
|
|
.Nm forkpty
|
|
.Nd 疑似端末を入手する補助関数
|
|
.Sh ライブラリ
|
|
.Lb libutil
|
|
.Sh 書式
|
|
.In sys/types.h
|
|
.In sys/ioctl.h
|
|
.In termios.h
|
|
.In libutil.h
|
|
.Ft int
|
|
.Fn openpty "int *amaster" "int *aslave" "char *name" "struct termios *termp" "struct winsize *winp"
|
|
.Ft int
|
|
.Fn forkpty "int *amaster" "char *name" "struct termios *termp" "struct winsize *winp"
|
|
.Sh 解説
|
|
.Fn openpty
|
|
関数は、次に使用できる疑似端末をシステムから
|
|
入手しようとします (
|
|
.Xr pty 4
|
|
参照)。疑似端末を問題なく見つけると、スレーブデバイスの所有権を
|
|
現行プロセスの実際の UID に、 グループメンバシップをグループ
|
|
.Dq tty
|
|
に (このようなグループがシステムに存在する場合)、所有者の
|
|
読み書き権とグループの書込み権を変更し、
|
|
.Xr revoke 2
|
|
を呼び出してラインの現在の使用を無効にしようとします。
|
|
.Pp
|
|
引数
|
|
.Fa name
|
|
が
|
|
.Dv NULL
|
|
ではない場合、
|
|
.Fn openpty
|
|
はスレーブ pty のパス名をこの領域にコピーします。
|
|
この配列で必要なスペースは、呼び出し側で割り振ります。
|
|
.Pp
|
|
引数
|
|
.Fa termp
|
|
か
|
|
.Fa winp
|
|
が
|
|
.Dv NULL
|
|
ではない場合、
|
|
.Fn openpty
|
|
は、これらの引数が指す構造体の termios 設定とウィンドウサイズ設定を
|
|
初期化します。
|
|
.Pp
|
|
戻る場合は、 pty のマスタサイドとスレーブサイドのオープンファイル記述子が、
|
|
.Fa amaster
|
|
と
|
|
.Fa aslave
|
|
が指す場所に戻されます。
|
|
.Pp
|
|
.Fn forkpty
|
|
は最初に
|
|
.Fn openpty
|
|
を呼び出し、次に使用できる疑似端末をシステムから入手します。
|
|
問題がない場合は、新しいプロセスが分岐されます。子プロセスでは、 pty
|
|
のマスタサイドの記述子を閉じ、スレーブ pty で
|
|
.Xr login_tty 3
|
|
を呼び出します。親プロセスでは、 pty のスレーブサイドの記述子を閉じます。
|
|
引数
|
|
.Fa amaster ,
|
|
.Fa name ,
|
|
.Fa termp
|
|
そして
|
|
.Fa winp
|
|
は、
|
|
.Fn openpty
|
|
の引数と同じ働きをします。
|
|
.Sh 戻り値
|
|
.Fn openpty
|
|
は、問題がなければ 0 を戻し、エラーが発生すると -1 を戻します。
|
|
.Pp
|
|
.Fn forkpty
|
|
は、エラーが発生すると -1 を戻し、スレーブプロセスに 0、親プロセスに
|
|
スレーブプロセスのプロセス ID を戻します。
|
|
.Sh エラー
|
|
エラーが発生した場合、
|
|
.Fn openpty
|
|
はグローバル変数
|
|
.Dv errno
|
|
を
|
|
.Er ENOENT
|
|
に設定します。
|
|
.Pp
|
|
.Fn forkpty
|
|
は、
|
|
.Xr fork 2
|
|
で説明してあるように、
|
|
.Dv errno
|
|
を設定することがあります。
|
|
.Sh 関連項目
|
|
.Xr chmod 2 ,
|
|
.Xr chown 2 ,
|
|
.Xr fork 2 ,
|
|
.Xr getuid 2 ,
|
|
.Xr open 2 ,
|
|
.Xr revoke 2 ,
|
|
.Xr login_tty 3 ,
|
|
.Xr pty 4 ,
|
|
.Xr termios 4 ,
|
|
.Xr group 5
|
|
.Sh バグ
|
|
呼び出しプロセスにスーパユーザの有効な UID がなければ、すべての
|
|
アクションは実行できません。 pty を割り振れる限り (
|
|
.Fn forkpty
|
|
の場合は新しいプロセスを作成できる限り)、説明したステップを
|
|
.Fn openpty
|
|
か
|
|
.Fn forkpty
|
|
が続けられなくても通知はされません。
|