srcstop サブルーチン

目的

システム・リソース・コントローラー (SRC) サブシステムを停止します。

ライブラリー

システム・リソース・コントローラー・ライブラリー (libsrc.a)

構文

#include <spc.h>
srcstop(Host, SubsystemName, SubsystemPID, StopType)
srcstop(ReplyLength, ServerReply, StopFrom)
char * Host, * SubsystemName;
int  SubsystemPID StopFrom;
short  StopType, * ReplyLength;
struct srcrep * ServerReply;

説明

srcstop サブルーチンは、サブシステム停止要求をサブシステムに送信し、システム・リソース・コントローラー (SRC) またはサブシステムからの停止応答を待ちます。 srcstop サブルーチンは、SRC によって開始されたサブシステムのみを停止できます。

パラメーター

項目 説明
Host この停止アクションが要求される外部ホストを指定します。 ホストが NULL 値の場合、要求はローカル・ホスト上の SRC に送信されます。 ローカル・ユーザーは、"root" として実行中でなければなりません。 リモート・システムは、リモート・システム・リソース・コントローラー要求を受け入れるように構成しておく必要があります。 つまり、 srcmstr デーモン (/etc/inittab を参照) を -r フラグで開始し、かつ、リモート要求を許可するよう /etc/hosts.equiv ファイルまたは .rhosts ファイルを構成しておく必要があります。
SubsystemName を停止するサブシステムの名前を指定します。
SubsystemPID srcstrt サブルーチンによって戻される、停止するシステムのプロセス ID を指定します。 ヌルの SubsystemPID パラメーターを指定する場合は、 SubsystemName パラメーターを指定する必要があります。
StopType サブシステムの停止要求のタイプを指定します。 このパラメーターが NULL の場合は、通常の停止が想定されます。 StopType パラメーターは、以下のいずれかの値でなければなりません。
キャンセル
サブシステムのクイック・ストップが必要です。 サブシステムに SIGTERM シグナルが送信されます。 サブシステム・オブジェクトに定義された待機時間が経過すると、SRC はサブシステムに SIGKILL シグナルを発行します。 この待機期間により、サブシステムはすべてのリソースをクリーンアップして終了することができます。 停止応答は SRC によって戻されます。
強制
サブシステムとそのすべてのサブサーバーのクイック・ストップを要求します。 停止応答は、シグナルを使用するサブシステムの場合は SRC によって、その他の通信タイプの場合はサブシステムによって戻されます。
NORMAL
すべての現行サブシステム活動が完了した後でサブシステムを終了するように要求します。 停止応答は、シグナルを使用するサブシステムの場合は SRC によって、その他の通信タイプの場合はサブシステムによって戻されます。
ReplyLength 停止応答の最大長をバイト単位で指定します。 srcstop サブルーチンからの戻り時に、このフィールドは受信したサブシステム応答パケットの実際の長さに設定されます。
ServerReply サブシステムの停止応答を受け取る svrreply 構造を指します。
StopFrom srcstop サブルーチンが停止結果を標準出力に表示するかどうかを指定します。 StopFrom パラメーターが SSHELLに設定されると、停止結果は標準出力に表示され、 srcstop サブルーチンは正常に戻ります。 StopFrom パラメーターが SDAEMONに設定されると、停止結果は標準出力に表示されず、呼び出し元に戻されます。

戻り値

正常終了すると、 srcstop サブルーチンは SRC_OK または SRC_STPOKを返します。

エラー・コード

以下の 1 つ以上が該当する場合、 srcstop サブルーチンは失敗します。

項目 説明
SRC_BADFSIG (SRC_BADFSIG) 強制停止シグナルは無効なシグナルです。
SRC_BADNSIG (SRC_BADNSIG) 通常停止シグナルは無効なシグナルです。
SRC_BADSOCK (SRC_BADSOCK) 通信ソケットで停止要求をサブシステムに渡すことができませんでした。
SRC_DMNA (SRC_DMNA) SRC デーモンがアクティブではありません。
SRC_INET_AUTHORIZED_HOST (SRC_INET_AUTHORIZED_HOST) ローカル・ホストがリモート /etc/hosts.equiv ファイルにありません。
SRC_INET_INVALID_HOST (SRC_INET_INVALID_HOST) リモート・ホストでは、ローカル・ホストは認識されません。
SRC_INVALID_USER (SRC_INVALID_USER) ユーザーが root またはグループ・システムではありません。
SRC_MMRY (SRC_MMRY) SRC コンポーネントは、必要なメモリーを割り振ることができませんでした。
SRC_NORPLY (SRC_NORPLY) 応答の待機中に要求がタイムアウトになりました。
SRC_NOTROOT (SRC_NOTROOT) SRC デーモンは root として実行されていません。
SRC_SOCK (SRC_SOCK) SRC ソケット通信に問題があります。
SRC_STPG (SRC_STPG) 要求はサブシステムに渡されませんでした。 サブシステムは停止中です。
SRC_SVND (SRC_SVND) サブシステムが SRC デーモンに認識されていません。
SRC_UDP (SRC_UDP) リモート SRC ポートが /etc/services ファイルに定義されていません。
SRC_UHOST (SRC_UHOST) 外部ホストが認識されていません。
SRC_PARM (SRC_PARM) 無効なパラメーターが渡されました。

  1. サブシステムのすべてのインスタンスを停止するには、次のように入力します。
    int rc;
    struct svrreply svrreply;
    short replen=sizeof(svrreply);
     
    rc=srcstop("MaryC","srctest",0,FORCE,&replen,&svrreply,SDAEMON);

    この要求は、停止タイプが以下のサブシステムを停止します。FORCEサブシステムのすべてのインスタンスsrctest日付MaryC停止の状況に関するメッセージを標準出力に出力しません。

  2. サブシステムの単一インスタンスを停止するには、次のように入力します。
    struct svrreply svrreply;
    short replen=sizeof(svrreply);
     
    rc=srcstop("","",999,CANCEL,&replen,&svrreply,SSHELL);
    この要求は、停止タイプが以下のサブシステムを停止します。CANCEL、以下のプロセス ID を使用 999ローカル・マシンに出力し、停止の状況に関するメッセージを標準出力に出力します。

ファイル

項目 説明
/etc/services インターネット・サービスに使用するソケットおよびプロトコルを定義します。
/dev/SRC AF_UNIX ソケット・ファイルを指定します。
/dev/.SRC-unix 一時ソケット・ファイルの位置を指定します。