Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2585 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  fopen sous Unix

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

fopen sous Unix

n°240687
_momone_
Posté le 06-11-2002 à 15:55:44  profilanswer
 

J'ai un petit problème.
 
Je veux ouvrir un fichier se trouvant dans le répertoire contenant mon binaire. Donc je fais un simple fopen("MON_FICHIER", "rb" ); mais le truc c'est que ça marche seulement si, lorsque je lance le binaire, je me trouve dans son répertoire:
Si je fais /PATH/DE/MON_BIN/bin, ça marche pas, je suis obligé de faire cd /PATH/DE/MON_BIN puis ./bin .
 
Donc comment faire pour toujours lui faire ouvrir le bon fichier quelquesoit le répertoire dans lequel je me trouve?? Ou alors comment obtenir le chemin de mon binaire???

mood
Publicité
Posté le 06-11-2002 à 15:55:44  profilanswer
 

n°240699
BifaceMcLe​OD
The HighGlandeur
Posté le 06-11-2002 à 16:02:38  profilanswer
 

Plus exactement, il faut que le répertoire du fichier à lire soit le répertoire courant (peu importe où se trouve l'exécutable).
 
A ma connaissance, sous Unix, c'est assez délicat de récupérer le répertoire de l'exécutable. Il faut analyser la variable d'environnement $PATH (getenv("PATH" ), fonction définie dans stdlib.h ; attention cette fonction peut renvoyer NULL) et parcourir chacun des répertoires que cette variable d'environnement contient pour y trouver l'exécutable décrit dans argv[0] (quand le main a pour prototype int void(int argc, char* argv[])).


Message édité par BifaceMcLeOD le 06-11-2002 à 16:03:12
n°240723
_momone_
Posté le 06-11-2002 à 16:14:30  profilanswer
 

:ouch: Ya pas plus simple?? C'est un peu une méthode barbare quand même :)
Enfin, c'est pas grave, si je trouve pas mieux, j'utiliserais le chemein complet, mais je vais perdre la portabilité vers Windows...
Ou alors, j'utiliserais une fonction intermédiaire pour accéder à mes fichiers à la fois sous Linux et sous Windows.
 
Merci beaucoup ;)

n°240727
nicolasm
Posté le 06-11-2002 à 16:16:20  profilanswer
 

_Momone_ a écrit a écrit :

:ouch: Ya pas plus simple?? C'est un peu une méthode barbare quand même :)
Enfin, c'est pas grave, si je trouve pas mieux, j'utiliserais le chemein complet, mais je vais perdre la portabilité vers Windows...
Ou alors, j'utiliserais une fonction intermédiaire pour accéder à mes fichiers à la fois sous Linux et sous Windows.
 
Merci beaucoup ;)




Et vive les "ifdef"

n°240759
BifaceMcLe​OD
The HighGlandeur
Posté le 06-11-2002 à 16:50:01  profilanswer
 

Non, ça marche aussi sous Windows, cette méthode. Mais sous Windows, il y a plus simple : argv[0] contient toujours le chemin complet de l'exécutable... :D
 
Comme dit nicolasm, vive les #ifdef. ;)

n°240800
_momone_
Posté le 06-11-2002 à 17:39:11  profilanswer
 

Ouaip, jcrois que je vais utilisais les #ifdef.
 
Merci à tous :hello:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  fopen sous Unix

 

Sujets relatifs
fopen et lien :/[mac] Chemin relatifs pour fopen ...
problème unix-windows (résolu)UNIX Scheme... faire un algo qui dit si un nombre est premier
fopen()...Inclus un paragraphe lisible->decoder not required ;-)[C, Unix, fork()] Les fils meurent trop vite!!
creations de consoles sous unix ou sous darwin avec Runtime()Lib unix smtp/pop3
[C/C++ sous UNIX] problème de buffer avec fgets et cin ![C++] Différence de codage entre .so(unix/linux) et .dll(win32)
Plus de sujets relatifs à : fopen sous Unix


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR