2 votes

Passer une variable à chdir() en C (Linux)

J'ai un problème avec chdir() dans mon programme C - uniquement lorsqu'il est exécuté sous Linux (il fonctionne bien sous Mac). J'ai dépouillé mon code.

Quelque chose comme ceci fonctionne bien :

chdir("/Documents");

mais lorsque j'essaie de le passer comme une variable, cela ne veut pas fonctionner.

char *home_directory;
home_directory = malloc(80);
chdir(home_directory);

Le répertoire d'origine est lu à partir d'un fichier situé ailleurs dans mon code, je peux afficher comment je l'ai fait si nécessaire.

Gracias.

7voto

Borodin Points 52478

Puisque vous lisez home_directory à partir d'un fichier, avez-vous oublié de supprimer le saut de ligne de fin et tout autre caractère parasite avant de l'utiliser comme paramètre de la commande chdir ?

2voto

Soren Points 6090

Essayez de vérifier les erreurs, comme ceci ;

char *home_directory;
home_directory = malloc(80);
/* ...fill the home directory... */
if (chdir(home_directory) == -1)
   perror("chdir");

.. et ensuite avec un man chdir Vous pouvez rechercher la signification du code d'erreur.

1voto

Roland Illig Points 15357

Depuis chdir est un appel système sous Linux, vous pouvez simplement utiliser la commande strace pour voir ce que fait réellement votre programme. Cela ne vous dispense pas de traiter les erreurs préalablement dans votre code, évidemment. Cela vous aide simplement à suivre les actions de votre programme.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X