Service de noyau NLuprintf

Objectif

Soumet une demande d'impression d'un message internationalisé à un terminal de contrôle de processus.

Syntaxe

#include <sys/uprintf.h>
int NLuprintf (Uprintf)
struct uprintf *Uprintf;

Paramètres

Article Descriptif
Uprintf Pointe vers une structure de demande Uprintf .

Descriptif

Le service de noyau NLuprintf soumet une demande de message de noyau internationalisée avec la structure de requête Uprintf spécifiée par le paramètre Uprintf comme entrée. Une fois la demande soumise, le démon Uprintfd extrait, convertit, formate et écrit le message décrit par la structure de requête Uprintf à un terminal de contrôle de processus.

L'appelant doit initialiser la structure de demande Uprintf avant d'appeler le service de noyau NLuprintf . Les zones de la structure de requête Uprintf utilisent plusieurs constantes. Les constantes suivantes sont définies dans le fichier /usr/include/sys/uprintf.h :

  • _MAX_MAX
  • UP_MAXARGS
  • UP_MAX_CAT
  • UP_MAXMSG

La structure de demande Uprintf se compose des zones suivantes:

Zone Descriptif
Uprintf->upf_defmsg Pointe vers un format de message par défaut. Le format de message par défaut est une chaîne de caractères qui contient l'un ou l'autre des deux types d'objet:
  • Caractes simples, qui sont copiés dans le flux de sortie de message
  • Spécifications de conversion, chacune d'entre elles entraînant zéro ou plusieurs éléments à extraire du tableau de paramètres de valeur Uprintf-> arg

Chaque spécification de conversion se compose d'un% (signe de pourcentage) suivi d'un caractère qui indique le type de conversion à appliquer:

%
Effectune pas de conversion. Imprime un caractère%.
D,
Accepte une valeur entière et la convertit en notation décimale signée.
U
Accepte une valeur entière et la convertit en notation décimale non signée.
o
Accepte une valeur entière et la convertit en notation octale non signée.
x
Accepte une valeur entière et la convertit en notation hexadécimale non signée.
c
Accepte et imprime une valeur Char .
s
Accepte une valeur en tant que chaîne (pointeur de caractère). Les caractères de la chaîne sont imprimés jusqu'à ce qu'un \0 (caractère null) soit détecté.

Les spécifications de conversion de précision ou de largeur de zone ne sont pas prises en charge.

Longueur maximale de la chaîne de format de message par défaut mise en évidence parUprintf->upf_defmsgZone correspond au nombre de caractères spécifié par la constante _MAX_MAX . :NONE.Uprintf->upf_defmsgDoit être un caractère non terne.

Le format de message par défaut est utilisé lors de la construction du message de noyau si le format de message décrit parUprintf->upf_NLsetnoetUprint->upf_NLmsgnoLes zones ne peuvent pas être extraites du catalogue de messages spécifié parUprintf->upf_NLcatname. Les spécifications de conversion contenues dans le format de message par défaut doivent correspondre à celles contenues dans le format de message spécifié par leupf_NLsetnoetupf_NLmsgno.

Uprintf->upf_arg[UP_MAXARGS] Indique, de zéro, le nombre de paramètres de valeur spécifiés par la constante UP_MAXARGS . Un paramètre Valeur peut être un entier, une valeur de caractère ou une valeur de chaîne (pointeur de caractères). La longueur des chaînes est limitée au nombre de caractères spécifié par la constante _MAX_MAX . Les paramètres de valeur de chaîne doivent être des caractères non ull. Le nombre, le type et l'ordre des éléments du tableau de paramètres Valeur doivent correspondre aux spécifications de conversion dans la chaîne de format de message.
Uprintf->upf_NLcatname Pointe vers le nom du fichier de catalogue de messages. Si le nom de fichier de catalogue désigné parUprintf->upf_NLcatnameCommence par une / (barre oblique), on suppose qu'il s'agit d'un nom de chemin absolu. Si le nom de fichier de catalogue n'est pas un nom de chemin absolu, l'environnement de processus détermine les chemins de répertoire à rechercher. La longueur maximale du nom du fichier de catalogue est limitée au nombre de caractères spécifié par la constante UP_MAX_CAT . La valeur de laUprintf->upf_NLcatnameDoit être un caractère non terne.
Uprintf->upf_NLsetno Indique l'ID de l'ensemble.
Uprintf->upf_NLmsgno Indique l'ID du message. :NONE.Uprintf->upf_NLsetnoetUprintf->upf_NLmsgnoLes zones indiquent une chaîne de format de message particulière à extraire du catalogue de messages spécifié par leUprintf->upf_NLcatname:NONE.

La longueur maximale du message de noyau construit est limitée au nombre de caractères spécifié par la constante UP_MAXMSG . Les messages plus volumineux, alors le nombre de caractères spécifié par la constante UP_MAXMSG sont supprimés.

Environnement d'exécution

Le service de noyau NLuprintf peut être appelé à partir de l'environnement Processus uniquement.

Valeurs renvoyées

Article Descriptif
0 % Indique une opération réussie.
ENOMEM Indique que la mémoire n'est pas disponible pour la mémoire tampon de la demande.
ENODEV Indique qu'un terminal de contrôle n'existe pas pour le processus.
ESRCH Indique que le démon Uprintfd n'est pas actif. Aucune demande ne peut être soumise.
EINVAL Indique que le pointeur de nom de fichier de catalogue de messages est nul ou que le nom du fichier de catalogue est supérieur au nombre de caractères spécifié par la constante UP_MAX_CAT .
EINVAL Indique qu'un pointeur de paramètre de valeur de chaîne est nul ou que le paramètre de valeur de chaîne est supérieur au nombre de caractères spécifié par la constante UP_MAX_CAT .
EINVAL Indique l'une des informations suivantes:
  • Le pointeur de format de message par défaut a la valeur null.
  • Le nombre de caractères dans le format de message par défaut est supérieur au nombre indiqué par la constante _MAX_MAX .
  • Le nombre de spécifications de conversion contenues dans le format de message par défaut est supérieur au nombre spécifié par la constante UP_MAXARGS .