Sous-routine srcstat_r

Objectif

Obtient un statut court sur un sous-système.

Bibliothèque

Bibliothèque du contrôleur de ressources système (libsrc.a)

Syntaxe

#include <spc.h>

int srcstat_r(Host, SubsystemName, SubsystemPID, ReplyLength,
                 StatusReply, Continued, SRCHandle)
char * Host, * SubsystemName;
pid_t  SubsystemPID;
int * Continued;
short * ReplyLength;
struct statrep * StatusReply;
char ** SRCHandle;

Descriptif

La sous-routine srcstat_r envoie une demande de statut court au contrôleur de ressources système (SRC) et renvoie le statut d'un ou de plusieurs sous-systèmes à l'appelant. Ce sous-programme admet les unités d'exécution multiples et est réentrant.

Paramètres

Article Descriptif
Hôte Indique l'hôte externe sur lequel cette action de statut est demandée. Si l'hôte est null, la demande de statut est envoyée au code SRC sur l'hôte local.
SubsystemName Indique le nom du sous-système sur lequel l'état abrégé doit être obtenu. Pour obtenir l'état de tous les sous-systèmes, utilisez la constante SRCALLSUBSYS . Pour obtenir le statut d'un groupe de sous-systèmes, le paramètre SubsystemName doit commencer par la constante SRCGROUP , suivie du nom du groupe pour lequel vous souhaitez ajouter le statut. Si vous spécifiez un paramètre SubsystemName null, vous devez spécifier un paramètre SubsystemPID .
SubsystemPID Indique le PID du sous-système sur lequel le statut renvoyé par la sous-routine srcstat_r doit être obtenu. Vous devez spécifier le paramètre SubsystemPID si plusieurs instances du sous-système sont actives et que vous demandez un statut de sous-système long ou de sous-serveur. Si vous spécifiez un paramètre SubsystemPID null, vous devez spécifier un paramètre SubsystemName .
ReplyLength Indique la taille d'une structure srchdr plus le nombre de structures statcode multiplié par la taille d'une structure statcode . En retour de la sous-routine srcstat_r , cette valeur est mise à jour.
StatusReply Indique un pointeur vers une structure de code statrep contenant un tableau statcode qui reçoit la réponse d'état pour le sous-système demandé. Le premier élément du tableau statcode renvoyé contient la ligne de titre du statut. La structure statcode est définie dans le fichier spc.h .
Continué Indique si cet appel à la sous-routine srcstat_r est la suite d'une demande de statut précédente. Si le paramètre Suite est défini sur NEWREQUEST, une demande de statut de sous-système court est envoyée au code SRC et srcstat_r attend la première réponse de statut. Lors du traitement de NEWREQUEST , la sous-routine srcstat_r ouvre un socket, mallocalise les mémoires tampon internes et sauvegarde une valeur dans SRCHandle. Dans des circonstances normales, le processus appelant ne doit jamais définir Suite sur une valeur autre que NEWREQUEST. Lorsque la sous-routine srcstat_r renvoie Continued=STATCONTINUED, appelez srcstat_r sans modifier les paramètres Suite et SRCHandle pour recevoir des données supplémentaires. La dernière réponse du code SRC définit Suite sur END. L'appelant doit continuer à appeler srcstat_r jusqu'à ce que END soit reçu. Sinon, le socket ne sera pas fermé et les mémoires tampon internes seront libérées. Vous pouvez également appeler srcstat_r avec Continued=STATCONTINUED pour supprimer les données restantes, fermer le socket et libérer les mémoires tampon internes.
SRCHandle Identifie une demande et ses réponses associées. Défini sur NULL par l'appelant pour une NEWREQUEST. La sous-routine srcstat_r sauvegarde une valeur dans SRCHandle pour permettre aux appels srcstat_r suivants d'utiliser les mêmes sockets et les mêmes tampons internes. Le paramètre SRCHandle ne doit pas être modifié par l'appelant à l'exception de NEWREQUEST.

Valeurs renvoyées

Si la sous-routine srcstat_r aboutit, elle renvoie la valeur 0. Un code d'erreur est renvoyé si la sous-routine échoue.

Codes d'erreur

La sous-routine srcstat_r échoue et renvoie le code d'erreur correspondant si l'une des conditions d'erreur suivantes est détectée:

Article Descriptif
SRC_DMNA Le démon SRC n'est pas actif.
SRC_INET_AUTHORIZED_HOST L'hôte local ne se trouve pas dans le fichier /etc/hosts.equiv distant.
SRC_INET_INVALID_HOST Sur l'hôte distant, l'hôte local est inconnu.
UTILISATEUR_IN_SRC_valide L'utilisateur n'est pas un superutilisateur ou un système de groupe.
SRC_MMRY Un composant SRC n'a pas pu allouer la mémoire dont il a besoin.
SRC_NOCONTINUE Suite n'a pas été défini sur NEWREQUEST et aucune continuation n'est actuellement active.
SRC_NORPLY La demande a expiré lors de l'attente d'une réponse.
SRC_SOCK Un incident s'est produit au niveau des communications de socket SRC.
SRC_UDP Le port SRC n'est pas défini dans le fichier /etc/services .
SRC_UHOST L'hôte étranger est inconnu.

Exemples

  1. Pour demander le statut d'un sous-système, entrez:
    int cont=NEWREQUEST;
    struct statcode statcode[20];
    short replen=sizeof(statcode);
    char *handle;
     
    srcstat_r("MaryC","srctest",0,&replen,statcode, &cont, &handle);

    Cette entrée demande le statut abrégé de toutes les instances du sous-systèmesrctestleMaryCvirtuelle.

  2. Pour demander le statut de tous les sous-systèmes, entrez:
    int cont=NEWREQUEST;
    struct statcode statcode[20];
    short replen=sizeof(statcode);
    char *handle; 
     
    srcstat_r("",SRCALLSUBSYS,0,&replen,statcode, &cont, &handle);

    Ce poste demande l'état abrégé de tous les sous-systèmes de la machine locale.

  3. Pour demander le statut d'un groupe de sous-systèmes, entrez:
    int cont=NEWREQUEST;
    struct statcode statcode[20];
    short replen=sizeof(statcode);
    char subsysname[30];
    char *handle; 
    
    strcpy(subsysname,SRCGROUP);
    strcat(subsysname,"tcpip");
    srcstat_r("",subsysname,0,&replen,statcode, &cont, &handle);

    Cette entrée demande le statut abrégé de tous les membres du groupe de sous-systèmestcpipsur la machine locale.

Fichiers

Article Descriptif
/etc/services Définit les sockets et les protocoles utilisés pour les services Internet.
/dev/SRC Indique le fichier socket AF_UNIX .
/dev/.SRC-unix Indique l'emplacement des fichiers de socket temporaires.