2016-03-12 1 views
0

J'ai écrit un shell et chaque fois que l'utilisateur donne un argument comme cd -blabla, il change de répertoire en bla bla.But quand j'entre dans cd, je veux qu'il aille dans mon répertoire home.Assigning my home répertoire est facile.J'ai juste écrit whereis la maison au terminal pour trouver mon répertoire personnel, mais je peux changer mon répertoire personnel.Si j'introduis mon adresse dans la fonction chdir() manuellement alors il va toujours changer pour ce répertoire.Comment puis-je trouver le répertoire de base le plus mis à jour dans C? (qui change chaque fois que je change mon répertoire personnel)Trouver mon répertoire personnel dans C/Unix

+0

Ceci est un doublon de [cette question] (http://stackoverflow.com/questions/2910377/get-home-directory-in-linux-c) – JJF

+1

Qu'est-ce que "le répertoire de base le plus à jour" signifie ??? Le répertoire de base n'est pas quelque chose qui change fréquemment, il est généralement considéré comme constant au fil du temps. Quoi qu'il en soit, vous pouvez obtenir la variable d'environnement 'HOME' ou lire' passwd' db pour obtenir l'entrée de l'utilisateur. –

Répondre

0

Vous devriez regarder pwd.h. Vous pouvez obtenir des informations sur un utilisateur par l'UID ou le nom.

Exemple par id

struct passwd *info = getpwuid(1000); 

Modifier 1000 à l'UID dont vous avez besoin. Vous pouvez utiliser getuid() défini dans unistd.h pour obtenir l'utilisateur actuel.

Le champ

info->pw_dir 

Contient le chemin de la maison de l'utilisateur.