REXEC(3) — NEWS-OS Programmer’s Manual
名称
rexec − ストリームをリモートコマンドへ返す
形式
rem = rexec(ahost, inport, user, passwd, cmd, fd2p);
char ∗∗ahost;
int inport;
char ∗user, ∗passwd, ∗cmd;
int ∗fd2p;
解説
rexec は、 gethostbyname(3N) を使ってホスト ∗ahost を検索し、 ホストが存在しない場合には、 −1 を返します。 さもなければ、 ∗ahost にホストの標準名をセットします。 ユーザ名とパスワードが両方とも指定される場合、 これらを使って、 他のホストを確認します。 そうでない場合、 適切な情報を求めて、 環境とユーザのホームディレクトリにある .netrc ファイルを検索します。 これらがすべて失敗した場合、 ユーザにその情報が求められます。
ポート inport は、 コネクションに使用する既知の DARPA インターネットポートを指定します。 その呼び出し“getservbyname("exec","tcp")” (getservent(3N) を参照) は、 必要となるポートを含む構造体へのポインタを返します。 コネクションに対するプロトコルについては、 rexecd(8C) で詳細に述べられています。
コネクションが成功した場合、 インターネットドメイン内の SOCK_STREAM タイプの ソケットが呼び出し側に返され、 stdin と stdout としてリモートコマンドに与えられます。 fd2p が 0 でない場合、 制御プロセスへの予備チャネルをセットアップし、 そのチャネルに対する記述子を ∗fd2p に格納します。 制御プロセスは、 このチャネル上のコマンド (ユニット 2) からの診断出力を返します。 また、 UNIX のシグナル番号としてこのチャンネル上のバイトデータを受け入れ、 コマンドのプロセスグループへ転送します。 許可が確認されたあとで、 2 番目のコネクションが確立されるので、 返された診断情報は、 リモート許可に関するエラーを含みません。 fd2p が 0 の場合、 stderr (リモートコマンドのユニット 2) は、 stdout と同様に作成されます。 外部のデータの使用によって、 警告を受ける可能性はありますが、 リモートプロセスへ、 任意のシグナルを送信するための規定はありません。
関連事項
NEWS-OSRelease 4.2.1R