UNAME(2) | Manual del Programador de Linux | UNAME(2) |
uname - obtiene el nombre e información del núcleo actual
#include <sys/utsname.h>
int uname(struct utsname *buf);
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[]; /* Operating system name (e.g., "Linux") */
char nodename[]; /* Name within "some implementation-defined
network" */
char release[]; /* Operating system release
(e.g., "2.6.28") */
char version[]; /* Operating system version */
char machine[]; /* Hardware identifier */ #ifdef _GNU_SOURCE
char domainname[]; /* NIS or YP domain name */ #endif };
The length of the arrays in a struct utsname is unspecified (see NOTES); the fields are terminated by a null byte ('\0').
En caso de éxito se devuelve cero. En caso de error se devuelve -1, y errno se configura adecuadamente.
POSIX.1-2001, POSIX.1-2008, SVr4. No hay ninguna llamada uname() en 4.3BSD.
El miembro domainname (el nombre de dominio NIS o YP) es una extensión de GNU.
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.
Parte de la información de utsname también puede ser accedida via /proc/sys/kernel/{ostype, hostname, osrelease, version, domainname}.
Over time, increases in the size of the utsname structure have led to three successive versions of uname(): sys_olduname() (slot __NR_oldolduname), sys_uname() (slot __NR_olduname), and sys_newuname() (slot __NR_uname). The first one used length 9 for all fields; the second used 65; the third also uses 65 but adds the domainname field. The glibc uname() wrapper function hides these details from applications, invoking the most recent version of the system call provided by the kernel.
uname(1), getdomainname(2), gethostname(2), uts_namespaces(7)
Esta página es parte de la versión 5.10 del proyecto Linux man-pages. Puede encontrar una descripción del proyecto, información sobre cómo informar errores y la última versión de esta página en https://www.kernel.org/doc/man-pages/.
La traducción al español de esta página del manual fue creada por Urko Lusa <ulusa@lacueva.ddns.org> y Miguel Pérez Ibars <mpi79470@alu.um.es>
Esta traducción es documentación libre; lea la GNU General Public License Version 3 o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD.
Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a debian-l10n-spanish@lists.debian.org>..
10 Octubre 2019 | Linux |