Maison  >  Article  >  développement back-end  >  Comment obtenir les répertoires personnels des utilisateurs dans les programmes Linux C sans s'appuyer sur des variables d'environnement ?

Comment obtenir les répertoires personnels des utilisateurs dans les programmes Linux C sans s'appuyer sur des variables d'environnement ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-01 00:11:02294parcourir

How to Obtain User Home Directories in Linux C   Programs Without Relying on Environment Variables?

Obtention des répertoires personnels des utilisateurs sous Linux

Lors du développement de programmes C exécutés sous Linux, il peut être nécessaire de récupérer le répertoire personnel de l'utilisateur. Pour y parvenir sans recourir à la variable d'environnement HOME, une approche plus fiable est disponible.

Pour obtenir le répertoire personnel sous Linux, les étapes suivantes peuvent être suivies :

1. Déterminer l'ID utilisateur :
Utilisez la fonction getuid() pour obtenir l'ID utilisateur de l'utilisateur actuel.

2. Récupérer l'entrée du mot de passe :
À l'aide de la fonction getpwuid(), vous pouvez acquérir l'entrée du mot de passe associée à l'ID utilisateur obtenu. Cette entrée encapsule le répertoire personnel.

Exemple de code :

<code class="c++">#include <unistd.h>
#include <sys/types.h>
#include <pwd.h>

struct passwd *pw = getpwuid(getuid());

const char *homedir = pw->pw_dir;</code>

Il est important de noter que si votre application utilise le threading, vous devez plutôt utiliser la fonction getpwuid_r pour sécurité des threads.

Accès au répertoire de base racine :

Le répertoire de base racine se trouve généralement dans /root. Si votre programme fonctionne sous l'utilisateur root, la création de fichiers ou de dossiers dans ce répertoire est acceptable. Il est toutefois conseillé de faire preuve de prudence et de limiter ces actions aux tâches essentielles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn