Encuentra el nombre de host del sistema en C
-
Utilice la función
gethostname
para encontrar el nombre de host del sistema en C -
Utilice la función
uname
para encontrar el nombre de host del sistema en C
Este artículo explicará varios métodos para encontrar el nombre de host del sistema en C.
Utilice la función gethostname
para encontrar el nombre de host del sistema en C
La función gethostname
es parte de la especificación POSIX y se utiliza para acceder al nombre de host del sistema. La función toma dos argumentos: char *
apunta a un búfer donde se almacenará el nombre de host recuperado y el número de bytes que denota la longitud del búfer. La función devuelve cero en caso de éxito y -1 se devuelve en caso de error. Tenga en cuenta que es probable que los sistemas POSIX tengan un número máximo de bytes definido para la longitud del nombre de host, por lo que el usuario debe asignar el búfer lo suficientemente grande para almacenar el valor recuperado.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
enum { MAX_SIZE = 256 };
int main(void) {
int ret;
char hostname[MAX_SIZE];
ret = gethostname(&hostname[0], MAX_SIZE);
if (ret == -1) {
perror("gethostname");
exit(EXIT_FAILURE);
}
printf("Hostname: %s\n", hostname);
exit(EXIT_SUCCESS);
}
Producción :
Hostname: lenovo-pc
El ejemplo anterior demuestra la llamada básica a la función gethostname
, pero siempre se deben implementar rutinas de informes de errores para garantizar un código a prueba de fallas y mensajes de registro informativos. Dado que gethostname
establece valores errno
, podemos evaluarlo en una declaración switch
e imprimir los mensajes correspondientes al flujo stderr
.
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
enum { MAX_SIZE = 256 };
int main(void) {
int ret;
char hostname[MAX_SIZE];
errno = 0;
ret = gethostname(&hostname[0], MAX_SIZE);
if (ret == -1) {
switch (errno) {
case EFAULT:
fprintf(stderr, "'name' argument is an invalid address");
break;
case EINVAL:
fprintf(stderr, "'len' argument is negative");
break;
default:
perror("gethostname");
}
exit(EXIT_FAILURE);
}
printf("Hostname: %s\n", hostname);
exit(EXIT_SUCCESS);
}
Producción :
Hostname: lenovo-pc
Utilice la función uname
para encontrar el nombre de host del sistema en C
Alternativamente, se puede utilizar la llamada a la función uname
para encontrar el nombre de host del sistema. uname
generalmente puede recuperar varios puntos de datos sobre el sistema, a saber, el nombre del sistema operativo, la fecha de lanzamiento del sistema operativo y la versión, el identificador de hardware y el nombre de host. Sin embargo, tenga en cuenta que uname
almacena la información anterior en una estructura utsntheame
definida en el archivo de encabezado <sys/utsname.h>
. La función lleva el puntero a la estructura utsname
y devuelve el valor cero en una llamada exitosa. uname
también establece errno
en caso de fallo, y el valor de EFAULT
se define como una indicación cuando el puntero pasado a una estructura utsname
no es válido.
#include <stdio.h>
#include <stdlib.h>
#include <sys/utsname.h>
enum { MAX_SIZE = 256 };
int main(void) {
struct utsname uts;
if (uname(&uts) == -1) perror("uname");
printf("Node name: %s\n", uts.nodename);
printf("System name: %s\n", uts.sysname);
printf("Release: %s\n", uts.release);
printf("Version: %s\n", uts.version);
printf("Machine: %s\n", uts.machine);
exit(EXIT_SUCCESS);
}
Producción :
Hostname: lenovo-pc
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook