Comment ouvrir un fichier avec son chemin relatif dans Linux?

J'ai un programme qui ouvre un fichier en utilisant un chemin relatif (par exemple,'..').

Maintenant le problème c'est que quand j'exécute le programme à partir d'un autre répertoire, le chemin d'accès relatif est pas relative à ce programme, mais par rapport au répertoire de travail. Donc, si je démarre le programme avec '/chemin/vers/le /programme/myprog' il ne parvient pas à trouver le fichier.

Est-il un moyen pour exécuter le programme indépendamment du répertoire de travail? Id est, comme Si le répertoire de travail ont été le répertoire où le programme est-il situé? Ou suis-je viens de penser à une trop compliqué et il y a un moyen beaucoup plus facile de faire référence à un fichier, dont la localisation est connue seulement par son chemin relatif au chemin d'accès du fichier de programme?

double possible de Répertoire de programme en cours d'exécution sur Linux?
Cela devrait être réalisable, mais êtes-vous sûr que vous voulez ? Sur Linux, chaque type de fichier a dédié répertoires : configuration de l'habitude d'aller /etc/ ou"~/.my_program, images and documentations to /usr/share`, et ainsi de suite. Aussi, la plupart des utilisateurs sera votre programme à exécuter dans le répertoire courant.
Voir aussi dreamincode.net/forums/topic/98402-directory-of-running-program
Je ne vois pas pourquoi c'est un doublon. Peut-être que la question n'était pas suffisamment claire. Mon programme est toujours dans". /Presse/bin'. Le code est dans". /d'outils/de quelque chose". Depuis que je suis parfois dans le répertoire des outils et parfois dans le répertoire de racine, le programme ne parvient pas si je dois utiliser le chemin relatif dans le programme.
Une fois que vous avez le programme de chemin d'accès absolu, de changer le répertoire courant est trivial ( chdir ), de sorte à ce que vous demandez est essentiellement égal à: "Comment puis-je obtenir le chemin absolu de mon exécutable ?".

OriginalL'auteur Burkhard | 2010-10-21