6
votes

C Programmation. Impression de l'utilisateur actuel

En programmation C Comment obtenez-vous l'utilisateur actuel et le répertoire de travail actuel. J'essaie d'imprimer quelque chose comme ceci: xxx

J'ai le code suivant, mais le nom d'utilisateur est montrant comme null. Toute idée ce que je fais mal? xxx


3 commentaires

pourquoi il ne s'agit pas de la programmation ..: P


désolé c'est une programmation lié ... j'ai commis une erreur en ajoutant la balise


Je suis sur un environnement UNIX. En fait, la façon dont j'ai eue bien fonctionné sur le terminal. J'avais juste montrant NULL lors de la compilation directement de Eclipse. GetLogin a également travaillé bien. Merci a tous


6 Réponses :


1
votes

Cela va être spécifique à la plate-forme, car il n'y a pas de manière intrinsèque dans le langage de programmation C pour le faire.

On dirait que vous êtes sur un système basé sur UNIX, vous voudrez donc probablement obtenir la variable d'environnement utilisateur qui est généralement le nom de connexion.


0 commentaires

5
votes

sur des systèmes de type Unix utilisez la fonction getlogin de Unisd.h.


0 commentaires

2
votes

Ce n'est pas une question c , mais ressemble plus à une question UNIX. Il n'y a pas de moyen portable d'obtenir les nom d'utilisateur et répertoire de travail actuel dans C Langue.

Cependant, en visionnant votre exemple, je peux vous dire que vous essayez d'imprimer le nom d'utilisateur UNIX actuel et le répertoire de travail actuel.

Si vous avez besoin de répertoire de travail actuel dans UNIX Vérifiez getcwd fonction .

Si vous avez besoin d'un nom d'utilisateur actuel, vous pouvez appeler un processus distinct whoami dans votre programme C ou Vérifiez l'appel getuid Appel de fonction .


0 commentaires

21
votes

Mis à part le fait que vous deviez utiliser la variable d'environnement utilisateur au lieu de logname , vous ne devez pas utiliser de variables d'environnement pour cela en premier lieu. Vous pouvez obtenir l'ID utilisateur actuel avec GetUID (2) et l'ID utilisateur effectif actuel avec geteuid (2) , puis utilisez getPwuid (3) pour obtenir le nom d'utilisateur de l'ID utilisateur à partir du fichier passwd: xxx

pour obtenir le nom de l'ordinateur actuel, utilisez gethostname (2) : xxx


0 commentaires

-3
votes

Notez que cela fonctionnera uniquement sur un système UNIX uniquement.
Peut être logname n'a pas été défini comme variable d'environnement Vous pouvez voir les variables d'environnement à l'aide de la commande printenv xxx

fait aussi le travail.

mais comme mentionné, vous ne devriez pas compter sur l'environnement Variables, utilisez plutôt les fonctions Standard C.Si vous voulez vraiment les utiliser, assurez-vous d'abord qu'il est défini.


1 commentaires

Il y a une énorme faille de sécurité si vous obtenez habituellement votre utilisateur de l'environnement dans de nombreux cas (par exemple, écrire sur / etc / shadow en fonction de ces informations). Quelqu'un pourrait simplement définir l'utilisateur = racine



1
votes

Vous pouvez également utiliser

#include<stdlib.h>
main()
{
    system("echo %username%");    /* This is for Windows
                                   * instead use system("echo $USER"); for UNIX
                                   */
}


0 commentaires