Servicio de kernel NLuprintf

Finalidad

Envía una solicitud para imprimir un mensaje internacionalizado a un terminal de control de proceso.

Sintaxis

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

Parámetros

Elemento Descripción
Uprintf Apunta a una estructura de solicitud de uprintf .

Descripción

El servicio de kernel de NLuprintf envía una solicitud de mensaje de kernel internacionalizado con la estructura de solicitud de uprintf especificada por el parámetro Uprintf como entrada. Una vez que la solicitud se ha enviado correctamente, el daemon de uprintfd recupera, convierte, formatea y escribe el mensaje descrito por la estructura de solicitud de uprintf en un terminal de control de proceso.

El llamante debe inicializar la estructura de solicitud de uprintf antes de llamar al servicio de kernel de NLuprintf . Los campos de la estructura de solicitud de uprintf utilizan varias constantes. Las constantes siguientes se definen en el archivo /usr/include/sys/uprintf.h :

  • UP_MAXSTR
  • UP_MAXARGS
  • UP_MAXCAT
  • UP_MAXMSG

La estructura de solicitud de uprintf consta de los campos siguientes:

Campo Descripción
Uprintf->upf_defmsg Apunta a un formato de mensaje predeterminado. El formato de mensaje predeterminado es una serie de caracteres que contiene uno o ambos tipos de objetos:
  • Caracteres sin formato, que se copian en la corriente de salida del mensaje
  • Especificaciones de conversión, cada una de las cuales hace que se captan cero o más elementos de la matriz de parámetros de valor de Uprintf-> arg

Cada especificación de conversión consta de un porcentaje (signo de porcentaje) seguido de un carácter que indica el tipo de conversión que se debe aplicar:

%
No realiza ninguna conversión. Imprime un carácter%.
d,
Acepta un valor entero y lo convierte en notación decimal firmada.
u
Acepta un valor entero y lo convierte en notación decimal sin signo.
o
Acepta un valor entero y lo convierte en notación octal sin signo.
X
Acepta un valor entero y lo convierte en notación hexadecimal sin signo.
c
Acepta e imprime un valor char .
s
Acepta un valor como una serie (puntero de caracteres). Los caracteres de la serie se imprimen hasta que se encuentra un \0 (carácter nulo).

Las especificaciones de conversión de precisión y anchura de campo no están soportadas.

La longitud máxima de la serie de formato de mensaje predeterminada a la que apunta laUprintf->upf_defmsgcampo es el número de caracteres especificado por la constante de UP_MAXSTR . Los 2Uprintf->upf_defmsgdebe ser un carácter no nulo.

El formato de mensaje predeterminado se utiliza en la construcción del mensaje de kernel si el formato de mensaje descrito por elUprintf->upf_NLsetnoyUprint->upf_NLmsgnono se pueden recuperar del catálogo de mensajes especificado porUprintf->upf_NLcatname. Las especificaciones de conversión contenidas en el formato de mensaje predeterminado deben coincidir con las contenidas en el formato de mensaje especificado por elupf_NLsetnoyupf_NLmsgnocampos.

Uprintf->upf_arg[UP_MAXARGS] Especifica desde cero hasta el número de parámetros de valor especificados por la constante de UP_MAXARGS . Un parámetro Valor puede ser un valor entero, un valor de carácter o un valor de serie (puntero de caracteres). Las series están limitadas en longitud al número de caracteres especificado por la constante de UP_MAXSTR . Los parámetros de valor de serie deben ser caracteres no nulos. El número, el tipo y el orden de los elementos de la matriz de parámetros de Valor deben coincidir con las especificaciones de conversión dentro de la serie de formato de mensaje.
Uprintf->upf_NLcatname Apunta al nombre de archivo del catálogo de mensajes. Si el nombre de archivo de catálogo al que hace referencia elUprintf->upf_NLcatnameempieza con una/(barra inclinada), se supone que es un nombre de vía de acceso absoluto. Si el nombre de archivo de catálogo no es un nombre de vía de acceso absoluta, el entorno de proceso determina las vías de acceso de directorio a buscar. La longitud máxima del nombre de archivo de catálogo está limitada al número de caracteres especificado por la constante de UP_MAXCAT . El valor de laUprintf->upf_NLcatnamedebe ser un carácter no nulo.
Uprintf->upf_NLsetno Especifica el ID de conjunto.
Uprintf->upf_NLmsgno Especifica el ID de mensaje. Los 2Uprintf->upf_NLsetnoyUprintf->upf_NLmsgnoLos campos especifican una serie de formato de mensaje en particular que se debe recuperar del catálogo de mensajes especificado por elUprintf->upf_NLcatname:NONE.

La longitud máxima del mensaje de kernel construido se limita al número de caracteres especificado por la constante de UP_MAXMSG . Los mensajes más grandes entonces se descartan el número de caracteres especificado por la constante de UP_MAXMSG .

Entorno de ejecución

El servicio de kernel de NLuprintf sólo se puede llamar desde el entorno de proceso .

Valores de retorno

Elemento Descripción
0 Indica una operación satisfactoria.
ENOMEM Indica que la memoria no está disponible para almacenamiento intermedio de la solicitud.
ENDEV Indica que no existe un terminal de control para el proceso.
ESRCH Indica que el daemon de uprintfd no está activo. No se pueden presentar solicitudes.
EINVAL Indica que el puntero de nombre de archivo de catálogo de mensajes es nulo o que el nombre de archivo de catálogo es mayor que el número de caracteres especificado por la constante de UP_MAXCAT .
EINVAL Indica que un puntero de parámetro de valor de serie es nulo o que el parámetro de valor de serie es mayor que el número de caracteres especificado por la constante de UP_MAXCAT .
EINVAL Indica una de las acciones siguientes:
  • El puntero de formato de mensaje predeterminado es nulo.
  • El número de caracteres en el formato de mensaje predeterminado es mayor que el número especificado por la constante de UP_MAXSTR .
  • El número de especificaciones de conversión contenidas en el formato de mensaje predeterminado es mayor que el número especificado por la constante de UP_MAXARGS .