Commande Access

Commande Access - C - Programmation

Marsh Posté le 25-10-2005 à 23:56:16    

Bonsoir,
 
Voilà, je dois utiliser la fonction access pour tester les droits en écriture sur un fichier. Tout va bien si je ne cherche pas à coder la capture de l'erreur, par contre si j'essaye, mon compilo
me jete comme un mal propre...
Si quelqu'un peut me dire comment on récupére le code erreur le la commande access en cas d'échec, ce serait super  :)  
 
voilà, j'ai tapé ça :
 

Code :
  1. if(access(fic,W_OK)==0) printf("\nAccès en écriture sur %s OK\n",fic);
  2. else {
  3.         printf("\nAccès en écriture refusé sur %s :\n",fic);
  4.         switch(errno) {
  5.             case EACCES                    : break;
  6.             case ELOOP                     : break;
  7.             case ENAMETOOLONG              : break;
  8.             case ENOENT                    : break;
  9.             case ENOTDIR                   : break;
  10.             case EROFS                     : break;
  11.             case EFAULT                    : break;
  12.             case EINVAL                    : break;
  13.             case EIO                       : break;
  14.             case ENOMEM                    : break;
  15.             case ETXTBSY                   : break;
  16.             défault                        : break;
  17.         }
  18.     }


 
et le compilo me crache ça :
 
main.c:93: error: 'errno' undeclared (first use in this function)
main.c:93: error: (Each undeclared identifier is reported only once
main.c:93: error: for each function it appears in.)
main.c:94: error: 'EACCES' undeclared (first use in this function)
main.c:95: error: 'ELOOP' undeclared (first use in this function)
main.c:96: error: 'ENAMETOOLONG' undeclared (first use in this function)
main.c:97: error: 'ENOENT' undeclared (first use in this function)
main.c:98: error: 'ENOTDIR' undeclared (first use in this function)
main.c:99: error: 'EROFS' undeclared (first use in this function)
main.c:100: error: 'EFAULT' undeclared (first use in this function)
main.c:101: error: 'EINVAL' undeclared (first use in this function)
main.c:102: error: 'EIO' undeclared (first use in this function)
main.c:103: error: 'ENOMEM' undeclared (first use in this function)
main.c:104: error: 'ETXTBSY' undeclared (first use in this function)
 
Pourtant sur le man 2 access :

Citation :

VALEUR RENVOYÃE
       L'appel   renvoie   0   s'il   réussit   (toutes  les  requêtes  sont
       autorisées), ou -1 s'il échoue (au moins une  requête  du  mode  est
       interdite), auquel cas errno contient le code d'erreur.


 
Voili, voilà et merci d'avance
 
Laurent.

Reply

Marsh Posté le 25-10-2005 à 23:56:16   

Reply

Marsh Posté le 26-10-2005 à 00:09:13    

Avec Borland, errno est défini dans errno.h et access dans io.h, donc il ne faut pas oublier :

#include <errno.h>
#include <io.h>
extern int errno;


Message édité par olivthill le 26-10-2005 à 00:12:46
Reply

Marsh Posté le 26-10-2005 à 00:15:22    

Merci pour ta réponse Olivthill, je viens d'essayer, la librairie n'est pas connue de mon système :(
Par contre, grace à toi, j'ai fait un man sur errno et .... Yep, il faut la lib <errno.h>.
 
Merci encore à toi

Reply

Marsh Posté le 26-10-2005 à 00:16:30    

Désolé, je n'avais pas vu ton msg en entier :)
Ca marche, c'est super !

Reply

Marsh Posté le 31-10-2005 à 04:43:07    

laurent_31 a écrit :

Merci pour ta réponse Olivthill, je viens d'essayer, la librairie n'est pas connue de mon système :(
Par contre, grace à toi, j'ai fait un man sur errno et .... Yep, il faut la lib <errno.h>.


Merci de cesser de confondre bibliothèque (implémentatoin) et fichier d'entête (interface)
 
http://mapage.noos.fr/emdel/notes.htm#pointeurs


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed