Comment obtenir le nom d'utilisateur en C/C++ sous Linux?
Comment puis-je obtenir le véritable "nom d'utilisateur" sans l'aide de l'environnement (getenv, ...) dans un programme?
Ce qui est une différence entre le c et le c++? Voulez-vous dire de la méthode de classe??
Tous POSIX de l'API est définie comme les fonctions C, qui peut être appelée tout de même en C++. Je ne comprends pas votre restriction.
Cette restriction n'a aucun sens... si vous avez besoin d'interagir avec un système d'exploitation POSIX vous de passer à C (ou montage). Et comment définissez-vous une "fonction C++"? Le C++ de la bibliothèque standard ne fournit pas de quoi que ce soit, et même si elle le faisait, il serait juste un wrapper pour
Je suis sûr qu'il ne voulait pas dire ce que vous avez dit, parce que ça n'aurait aucun sens... pouvez-vous nous dire les mots exacts qu'il a écrit dans le devoir? Il a probablement juste de ne pas vous écrire un style C de la fonction (avec
techniquement
Tous POSIX de l'API est définie comme les fonctions C, qui peut être appelée tout de même en C++. Je ne comprends pas votre restriction.
Cette restriction n'a aucun sens... si vous avez besoin d'interagir avec un système d'exploitation POSIX vous de passer à C (ou montage). Et comment définissez-vous une "fonction C++"? Le C++ de la bibliothèque standard ne fournit pas de quoi que ce soit, et même si elle le faisait, il serait juste un wrapper pour
getlogin_r
.Je suis sûr qu'il ne voulait pas dire ce que vous avez dit, parce que ça n'aurait aucun sens... pouvez-vous nous dire les mots exacts qu'il a écrit dans le devoir? Il a probablement juste de ne pas vous écrire un style C de la fonction (avec
char *
& co.), mais un wrapper C++ (avec std::string
, ...) pour getlogin_r
.techniquement
cstdlib
& co. le C++ comprend (à condition que l'héritage de la bibliothèque C à l'intérieur de la std
espace de noms). Encore, POSIX en-têtes ne sont pas inclus dans la norme C, sont des Api du système d'exploitation destiné à être utilisé à partir de plusieurs langues (principalement en C et C++).OriginalL'auteur Zat42 | 2012-01-21
Vous devez vous connecter pour publier un commentaire.
La fonction
getlogin_r()
défini dansunistd.h
renvoie le nom d'utilisateur. Voirman getlogin_r
pour plus d'informations.Sa signature est:
Inutile de dire que cette fonction peut être appelée en C ou C++.
Note getlogin_r retourne le nom de l'utilisateur connecté au terminal de contrôle du processus. Ce qui peut être différent de l'utilisateur, le travail est en cours. Cette fonction échoue également si vous n'êtes pas attachés à un terminal de contrôle (par exemple, lorsqu'un processus est automatiquement).
getlogin() c'est plus simple
Cela nécessite ATS d'être présente, si vous êtes à l'expédition de vos applications grâce à une sorte de planificateur cela va probablement échouer.. voir Nemanja Borique réponse à un plus "robuste" de la version
OriginalL'auteur drrlvn
De http://www.unix.com/programming/21041-getting-username-c-program-unix.html :
Il suffit de prendre les lignes principales et de l'encapsuler dans une classe:
Pour C seulement:
Pour être pédant, n'est-ce pas votre programme manque un endpwent() appel?
Corriger, merci, je vais mettre à jour le code.
Ne pouvez-vous pas simplement utiliser argv[0] pour obtenir le nom du programme, même si elle est modifiée après la compilation?
Ah, vous voulez dire pour
_PROGRAM_NAME
. Oui, que ferais, c'est juste l'exemple du lien que j'ai collé.OriginalL'auteur Nemanja Boric