Bonjour,
Comment en C peut t'on simplement connaitre les droits et le propriétaire d'un fichier, sans passer par une commande "system()".
Merci
Bonjour,
Comment en C peut t'on simplement connaitre les droits et le propriétaire d'un fichier, sans passer par une commande "system()".
Merci
Il n'y a rien de standard en C pour faire cela. En plus, cela va dépendre de l'OS, ou plutôt du système de fichiers. Si tu ne veux pas utiliser system(), il faut donc trouver une bibliothèque qui te permette de faire cela. Sous windows, l'API win32 offre peut-être de quoi faire.
On peut pas. En C, la notion de 'propriétaire' ou de 'droit' n'existe pas. Il faut utiliser des fonctions systèmes ou POSIX.1 ([f]stat())
Quid des fonctions chmod ou chown ?
Sur mes machines HP ou Linux, le code suivant fonctionne :
Si il existe une fonction C pour modifier les droits sur un fichier, on pourrais en avoir une pour les lire ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include <stdio.h> int main (int argc,char * argv[]) { FILE *fic; char filename[200] = "test.txt"; fic = fopen(filename,"r"); if (fic == NULL) system("touch test.txt"); else fclose(fic); chmod (filename, 0777); }
Merci
Raymond
Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi
CafuroCafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
e-verbeUn logiciel de conjugaison des verbes de la langue française.
Ma page personnelle sur DVP.
Non. Manque un header...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 -------------- Build: Debug in hello --------------- [ 50.0%] Compiling: main.c [100.0%] Linking console executable: bin\Debug\hello.exe C:\dev\hello\main.c: In function `main': C:\dev\hello\main.c:10: warning: implicit declaration of function `system' C:\dev\hello\main.c:13: warning: implicit declaration of function `chmod' C:\dev\hello\main.c: At top level: C:\dev\hello\main.c:3: warning: unused parameter 'argc' C:\dev\hello\main.c:3: warning: unused parameter 'argv' C:\dev\hello\main.c: In function `main': C:\dev\hello\main.c:14: warning: control reaches end of non-void function Output size is 19.66 KB Process terminated with status 0 (0 minutes, 2 seconds) 0 errors, 5 warningsCe n'est pas une 'fonction C', mais une fonction système POSIX.1Si il existe une fonction C pour modifier les droits sur un fichier, on pourrais en avoir une pour les lire ?
http://www.opengroup.org/onlinepubs/...xsh/chmod.html
Merci de vos réponses.
De mon point de vue tout ce qui est "compris" par un compilateur C est du C !
la commande "man 2 chmod" sous HPUX (unix) ou Linux RedHat 4 m'indique bien la description d'une fonction C.
Alors, effectivement la commande stat() fournit bien les infos espérées.
Quant à la compilation qui ne marcherait pas, c'est assez curieux, car sur mes deux environnements cela est bon :
HPUX : cc test2.c -o test
Linux : gcc test2.c -o test
Aucune erreur, ni warning.
A bientôt
Avec cc et gcc, tu n'as pas de warnings si tu ne les demandes pas explicitement (je l'ai appris à mes dépens et ça m'a valu un 9/20 à un projet de fin d'année).
Commence par rajouter au moins -Wall...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Euh non, et ça montre surtout que tu ne sais pas faire la différence entre le langage C, sa bibliothèque et les bibliothèques externes (tierces, API etc.)
http://emmanuel-delahaye.developpez....m#c_vs_systeme
Euh non. Les fonctions C, c'est man 3. Man 2, c'est les fonctions systèmes... Là encore, il ne suffit pas de croire que... Il faut vérifier.la commande "man 2 chmod" sous HPUX (unix) ou Linux RedHat 4 m'indique bien la description d'une fonction C.
Oui, ce sont des environnements réputés POSIX.1, ce que n'est pas Windows.Quant à la compilation qui ne marcherait pas, c'est assez curieux, car sur mes deux environnements cela est bon :
HPUX : cc test2.c -o test
Linux : gcc test2.c -o test
Aucune erreur, ni warning.
Partager