Trouver le nom d'hôte du système en C
-
Utiliser la fonction
gethostname
pour trouver le nom d’hôte du système en C -
Utilisez la fonction
uname
pour trouver le nom d’hôte du système en C
Cet article explique plusieurs méthodes pour trouver le nom d’hôte du système en C.
Utiliser la fonction gethostname
pour trouver le nom d’hôte du système en C
La fonction gethostname
fait partie de la spécification POSIX, et elle est utilisée pour accéder au nom d’hôte du système. La fonction prend deux arguments : char*
pointant vers un tampon où le nom d’hôte récupéré sera stocké et le nombre d’octets indiquant la longueur du tampon. La fonction renvoie zéro en cas de succès, et -1 en cas d’erreur. Notez que les systèmes POSIX sont susceptibles d’avoir un nombre maximum d’octets défini pour la longueur du nom d’hôte, donc l’utilisateur devrait allouer le tampon assez grand pour stocker la valeur récupérée.
#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);
}
Production :
Hostname: lenovo-pc
L’exemple précédent montre l’appel de base à la fonction gethostname
, mais il faut toujours mettre en œuvre des routines de rapport d’erreur pour assurer un code à sécurité intégrée et des messages de journalisation informatifs. Puisque la fonction gethostname
fixe des valeurs errno
, nous pouvons l’évaluer dans une instruction switch
et imprimer les messages correspondants dans le flux 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);
}
Production :
Hostname: lenovo-pc
Utilisez la fonction uname
pour trouver le nom d’hôte du système en C
On peut aussi utiliser l’appel de fonction uname
pour trouver le nom d’hôte du système. uname
peut généralement récupérer plusieurs points de données sur le système, à savoir le nom du système d’exploitation, la date de sortie du système d’exploitation, la version, l’identifiant du matériel et le nom d’hôte. Notez cependant que uname
stocke les informations ci-dessus dans une structure utsntheame
définie dans le fichier d’en-tête <sys/utsname.h>
. La fonction prend le pointeur vers la structure utsname
et renvoie la valeur zéro lors d’un appel réussi. La fonction uname
définit également errno
en cas d’échec, et la valeur EFAULT
est définie comme une indication lorsque le pointeur passé à une structure utsname
est invalide.
#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);
}
Production :
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