2009-11-02 8 views
0

autre que getdomainname() est-il possible d'obtenir le nom de domaine sous Linux sans devoir ouvrir et analyser les fichiers dans/etc?Obtenir le nom de domaine dans linux (programmation C)

Le code est apprécié.

Merci

+3

Quel est le problème avec 'getdomainname()'? –

+0

il renvoie toujours "none" même lorsque le domaine est défini – wonderer

+5

Vous êtes probablement confronté à un problème de configuration plutôt que celui d'une bibliothèque. Vous voudrez peut-être poser une question similaire sur Serverfault pour essayer de déterminer pourquoi 'getdomainname()' ne renvoie pas ce que vous attendez. –

Répondre

1

les opérations suivantes:

#include <string.h> 
#include <netdb.h> 
#include <unistd.h> 
#include <stdio.h> 

int main(int argc, char* argv[]) 
{ 
    char hn[254]; 
    char *dn; 
    struct hostent *hp; 

    gethostname(hn, 254); 
    hp = gethostbyname(hn); 
    dn = strchr(hp->h_name, '.'); 
    if (dn != NULL) { 
    printf("%s\n", ++dn); 
    } 
    else { 
    printf("No domain name available through gethostbyname().\n"); 
    } 

    return 0; 
} 

Il semble que getdomainname() ne vous en dire un nom de domaine NIS ou YP, que vous n'aurez probablement pas réglée. En revanche, interroger le nom d'hôte complet avec gethostbyname(), vérifie une variété de sources différentes (y compris DNS et/etc/hosts) pour déterminer votre nom d'hôte canonique.

+0

Non la meilleure solution puisque le nom d'hôte n'a pas toujours le nom de domaine mais assez bon – wonderer

0

Pour référence ultérieure, Linux et d'autres systèmes ont une getdomainname() function qui devrait faire ce que vous voulez, bien que ce soit not part of the POSIX standard.

+0

Merci, mais si vous lisez ma question, vous pouvez voir que je suis au courant de cette fonction – wonderer

+1

Oui, absolument, mais vous et d'autres qui viennent ici pour une réponse à la même question peut valoriser une référence à la documentation. – Tim

+0

un grand merci. J'ai lu l'homme quand j'écrivais le code – wonderer

Questions connexes