Contenu | Rechercher | Menus

Annonce

L'équipe des administrateurs et modérateurs du forum vous invite à prendre connaissance des nouvelles règles.
En cas de besoin, vous pouvez intervenir dans cette discussion.

Ubuntu 18.04 LTS
Ubuntu-fr propose des clés USB de Ubuntu et toutes ses « saveurs » ainsi qu'un magnifique t-shirt pour cette toute nouvelle version d'Ubuntu !

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 04/05/2018, à 06:54

CodeRom

[ Résolu] Renseigner dans une application un nom d'user portable.

Bonjour j'ai developpé une application où je télécharge et upload different fichier binaire et texte d'un pc a un autre, les deux machine sont sous Ubuntu16.04 LTS.

Hors je souhaiterais que mon code soit plus  portable, je m'explique :

Pour télécharger un fichier par exple je dois l'ouvrir avec la fonction fopen et renseigner un path et une option d'ouverture (lecture, ecriture, les deux ect).Là viens mon problème concrétement je fait donc (le chemin est un exple):

fichier = fopen("/home/robert/Bureau/toto.txt", "r");

Cette ligne ne fonctionnera que sur la machine dont l'user est robert, hor moi je souhaiterais que la ligne fonctionne sur toute les machine quelque soit l'user, et là je ne sais pas comment faire, peut être faut il remplacer robert par $user une variable plus générique, bref je ne sais pas.

Donc ma question est comment faire pour que le nom d'utilisateur soit générique et non pas unique.

Voila, j'espère que j'ai été clair dans mon explication, j'ai essayé en tout cas, merci d'avance et si vous avez des questions hésitez pas.

Dernière modification par CodeRom (Le 04/05/2018, à 10:28)

Hors ligne

#2 Le 04/05/2018, à 07:14

michel_04

Re : [ Résolu] Renseigner dans une application un nom d'user portable.

Bonjour,

Avec $USER ça ne fonctionne pas ?

fichier = fopen("/home/robert/Bureau/$USER.txt", "r");

A+

Hors ligne

#3 Le 04/05/2018, à 07:32

moko138

Re : [ Résolu] Renseigner dans une application un nom d'user portable.

fichier = fopen("/home/$USER/Bureau/toto.txt", "r");

non ?


%NOINDEX%
Un utilitaire méconnu : ncdu

Hors ligne

#4 Le 04/05/2018, à 07:37

michel_04

Re : [ Résolu] Renseigner dans une application un nom d'user portable.

Re,

moko138 a écrit :
fichier = fopen("/home/$USER/Bureau/toto.txt", "r");

non ?

Bien sûr moko138.
Trompage de bon matin.
Tu penses "/home/$USER/Bureau/toto.txt" et tu écris ""/home/robert/Bureau/$USER.txt");" (et sans balise Code)
Mal réveillé ou pas assez dormi. wink

A+

Dernière modification par michel_04 (Le 04/05/2018, à 07:39)

Hors ligne

#5 Le 04/05/2018, à 09:01

grim7reaper

Re : [ Résolu] Renseigner dans une application un nom d'user portable.

Salut,

Quelques questions :
- Quel est le langage utilisé : C ? Python ? … ?
- Portable à quel point : Linux seulement ? Windows aussi ? … ?

Par exemple, si tu fais du C et que tu souhaites être portable sur Linux seulement, je te conseille de jeter un œil à la fonction getpwuid (getpwuid_r pour être plus safe) et surtout le champ pw_name de la structure passwd.

Mais si tu veux connaître le chemin vers le HOME (ce qui semble plus utile que le nom de l’utilisateur si tu veux lire/écrire des fichier) le mieux c’est d’utiliser la variable d’environnement dédiée :

https://linux.die.net/man/3/getpwuid a écrit :

The pw_dir field contains the name of the initial working directory of the user. Login programs use the value of this field to initialize the HOME environment variable for the login shell. An application that wants to determine its user's home directory should inspect the value of HOME (rather than the value getpwuid(getuid())->pw_dir) since this allows the user to modify their notion of "the home directory" during a login session.

Pour accéder au variables d’environnement en C, il y a getenv.

Hors ligne

#6 Le 04/05/2018, à 10:28

CodeRom

Re : [ Résolu] Renseigner dans une application un nom d'user portable.

Re,

C'est en langague C et portable uniquement sur linux.
J'ai testé la variable d'environnement HOME et je trouve bien l'user , ça fonctionne merci grim7reaper, je vais zieuter aussi getpwuid(&& getpwuid_r) pour ma propre culture.

Merci a vous tous pour votre aide, c'est sympa.

Hors ligne