NOMBRE¶
uname - obtiene el nombre e información del núcleo actual
SINOPSIS¶
#include <sys/utsname.h>
int uname(struct utsname *buf);
DESCRIPCIÓN¶
uname devuelve información del sistema en la estructura apuntada por
buf. La estructura
utsname se define en
<sys/utsname.h>:
struct utsname {
char sysname[];
char nodename[];
char release[];
char version[];
char machine[];
#ifdef _GNU_SOURCE
char domainname[];
#endif
};
La longitud de los vectores de la estructura
utsname es indefinida; los
campos terminan en NUL.
VALOR DEVUELTO¶
En caso de éxito, se devuelve cero. En caso de error, se devuelve -1 y se
establece el
errno apropiado.
ERRORES¶
- EFAULT
- buf no es válido.
SVr4, SVID, POSIX, X/OPEN. No hay ninguna llamada
uname en BSD 4.3.
El miembro
domainname (el nombre de dominio NIS o YP) es una
extensión de GNU.
OBSERVACIONES¶
Esta es una llamada al sistema, y el sistema operativo conoce presumiblemente su
nombre, revisión y versión. También sabe sobre qué
hardware se ejecuta. Por tanto, cuatro de los campos de la estructura son
relevantes. Por otra parte, el campo
nodename carece de importancia: da
el nombre de la máquina actual en alguna red indefinida, pero normalmente
las máquinas se encuentran en más de una red y tienen muchos
nombres. Además, el núcleo no tiene manera de conocer estas
situaciones, por lo que hay que decirle cómo actuar en este caso. Lo
mismo vale para el campo adicional
domainname.
Para este propósito Linux utiliza las llamadas al sistema
sethostname(2) y
setdomainname(2). Observe que no hay
ningún estándar que diga que el nombre de host establecido por
sethostname(2) sea la misma cadena que contiene el campo
nodename de la estructura devuelta por
uname (de hecho, algunos
sistemas permiten un nombre de host de 256 bytes y un nodename de 8 bytes),
pero ésto es cierto en Linux. Lo mismo vale para
setdomainname(2)
y el campo
domainname.
La longitud de los campos en la estructura varía. Algunos sistemas
operativos o bibliotecas usan valores fijos como 9, 33, 65 o 257. Otros
sistemas usan SYS_NMLN o _SYS_NMLN o UTSLEN o _UTSNAME_LENGTH. Claramente, es
una mala idea usar cualquiera de estas constantes - tan sólo utilice
sizeof(...). A menudo se elige 257 con el fin de tener espacio para un nombre
de host en internet.
Ha habido tres llamadas al sistema
uname() en Linux. La primera usaba
longitud 9, la segunda usaba 65, la tercera también usa 65 pero
añade el campo
domainname.
Parte de la información de utsname también puede ser accedida via
sysctl y via
/proc/sys/kernel/{
ostype,
hostname,
osrelease,
version,
domainname}.
VÉASE TAMBIÉN¶
uname(1),
getdomainname(2),
gethostname(2)