Pages : 1
#1 Le 18/05/2008, à 15:10
- lenetfm
L'etat d'un disque dure
Salut tout le monde je suis désespere :-S je cherche depuis plus de dix jours et jai rien trouve je veux savoir qu'elle est la fonction C qui me donne l'etat de mon disque dure et ses partitions
Merci Infinimenent
Hors ligne
#2 Le 18/05/2008, à 15:26
- Astier
Re : L'etat d'un disque dure
Que veux-tu dire au juste ? Il y a bien fdisk et df qui se rapportent aux disques durs mais est-ce cela ?
A+
Hors ligne
#4 Le 18/05/2008, à 15:49
- lenetfm
Re : L'etat d'un disque dure
Que veux-tu dire au juste ? Il y a bien fdisk et df qui se rapportent aux disques durs mais est-ce cela ?
A+
non c'est pas ca je veux pas utilise une fonction system je dois trouve une fonction en langage C
Hors ligne
#5 Le 19/05/2008, à 12:59
- elfoiros
Re : L'etat d'un disque dure
Pour les partitions, tu peux ouvrir le fichier /proc/partitions en lecture.
Pour les infos disques, tu peux ouvrir le fichier /proc/diskstats.
Tu peux trouver toutes les informations matériel dans le repertoire /proc.
Exemple : /proc/cpuinfo, /proc/meminfo, /proc/filesystems, /proc/vmstats ...
Coluche : "Bite" c'est un gros mot, même si c'est une petite
Consultant e-commerce
Étude et realisation
Optimisation, maintenance
Hors ligne
#6 Le 19/05/2008, à 15:23
- lenetfm
Re : L'etat d'un disque dure
Pour les partitions, tu peux ouvrir le fichier /proc/partitions en lecture.
Pour les infos disques, tu peux ouvrir le fichier /proc/diskstats.Tu peux trouver toutes les informations matériel dans le repertoire /proc.
Exemple : /proc/cpuinfo, /proc/meminfo, /proc/filesystems, /proc/vmstats ...
Merci pour l'information mais ce que je cherche c'est une fonction en C par example pour savoir la taille du ram disponible il faut on appelle la fonction freeram qui nous donne la taille libre de la ram alors si tu connais une ca me fera un grand plaisir
Merci pour votre aide
Hors ligne
#7 Le 19/05/2008, à 16:39
- elfoiros
Re : L'etat d'un disque dure
cat /proc/meminfo
MemTotal: 2059688 kB
MemFree: 252040 kB
Buffers: 167096 kB
Cached: 694828 kB
SwapCached: 8 kB
Active: 1283828 kB
Inactive: 294904 kB
HighTotal: 1163200 kB
HighFree: 112536 kB
LowTotal: 896488 kB
LowFree: 139504 kB
SwapTotal: 2048248 kB
SwapFree: 2013344 kB
Dirty: 4900 kB
Writeback: 0 kB
AnonPages: 716788 kB
Mapped: 469564 kB
Slab: 97684 kB
SReclaimable: 49472 kB
SUnreclaim: 48212 kB
PageTables: 5156 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 3078092 kB
Committed_AS: 2485060 kB
VmallocTotal: 114680 kB
VmallocUsed: 72448 kB
VmallocChunk: 41600 kB
Tu ouvre le fichier en lecture et tu recherche la ligne contenant MemFree
Tu peux ecrire une fonction qui fais cela. ça tient en 5 lignes de code C.
Coluche : "Bite" c'est un gros mot, même si c'est une petite
Consultant e-commerce
Étude et realisation
Optimisation, maintenance
Hors ligne
#8 Le 19/05/2008, à 16:49
- lenetfm
Re : L'etat d'un disque dure
cat /proc/meminfo MemTotal: 2059688 kB MemFree: 252040 kB Buffers: 167096 kB ..................
Tu ouvre le fichier en lecture et tu recherche la ligne contenant MemFree
Tu peux ecrire une fonction qui fais cela. ça tient en 5 lignes de code C.
tu mas pas bien compri je veux savoir la taille libre pour mes partition et /proc/diskstats ne me donne pas ca il me donne dis chiffre mais ca pas ca que je veux
voila ce qu'elle me donne :
1 0 ram0 0 0 0 0 0 0 0 0 0 0 0
1 1 ram1 0 0 0 0 0 0 0 0 0 0 0
1 2 ram2 0 0 0 0 0 0 0 0 0 0 0
1 3 ram3 0 0 0 0 0 0 0 0 0 0 0
1 4 ram4 0 0 0 0 0 0 0 0 0 0 0
1 5 ram5 0 0 0 0 0 0 0 0 0 0 0
1 6 ram6 0 0 0 0 0 0 0 0 0 0 0
1 7 ram7 0 0 0 0 0 0 0 0 0 0 0
1 8 ram8 0 0 0 0 0 0 0 0 0 0 0
1 9 ram9 0 0 0 0 0 0 0 0 0 0 0
1 10 ram10 0 0 0 0 0 0 0 0 0 0 0
1 11 ram11 0 0 0 0 0 0 0 0 0 0 0
1 12 ram12 0 0 0 0 0 0 0 0 0 0 0
1 13 ram13 0 0 0 0 0 0 0 0 0 0 0
1 14 ram14 0 0 0 0 0 0 0 0 0 0 0
1 15 ram15 0 0 0 0 0 0 0 0 0 0 0
8 0 sda 68658 28231 1263258 273328 21981 18226 322368 2919776 0 205344 3196000
8 1 sda1 23105 173360 30 240
8 2 sda2 3 6 0 0
8 5 sda5 29802 203956 2 16
8 6 sda6 4755 6736 0 0
8 7 sda7 39240 879128 40264 322104
alors esque tu peux m'exlique c koi ces numéro esque c'est en Octet ou bien en block et si en block pour faire la conversion en octet en fais comment merci d'avance
Hors ligne
#9 Le 19/05/2008, à 17:13
- nicolas66
Re : L'etat d'un disque dure
1 - Evite le language style sms
2 - Ce problème a déjà été évoqué
Bonne soirée !
"The computer was born to solve problems that did not exist before." (B. Gates)
Hors ligne
#10 Le 19/05/2008, à 17:43
- lenetfm
Re : L'etat d'un disque dure
1 - Evite le language style sms
2 - Ce problème a déjà été évoquéBonne soirée !
merci pour le message mais c'est pas le meme message et d'ailleurs c'est moi l'auteur de lautre lien je cherche comment le programme pas comment l'utilise Merci comme meme
Hors ligne
#11 Le 19/05/2008, à 22:23
- nicolas66
Re : L'etat d'un disque dure
Bah je pense qu'on t'avait donné suffisamment de pistes pour te lancer . Comme je suis sympa, je te file un snippet pour afficher quelques infos sur tes partitions. Pour le reste, tu te débrouilles et tu adaptes :
#include <stdlib.h>
#include <stdio.h>
void usage( const char * Command )
{
printf("usage: %s partition", Command);
}
int main( int argc, char ** argv )
{
char buffer[100];
size_t length = 0;
int total = 0, occupe = 0, dispo = 0;
FILE * fp;
if( argc != 2 )
{
usage(argv[0]);
return EXIT_FAILURE;
}
printf("[ Infos sur la partition %s ]\n\n", argv[1]);
/* On copie la commande à exécuter dans un buffer */
sprintf(buffer, "df %s | tail -n 1 | awk '{print $2\":\"$3\":\"$4\":\"$6}' > infos.dat", argv[1]);
/* On exécute la commande */
system(buffer);
/* On ouvre le fichier */
fp = fopen("infos.dat", "r");
/* On extrait les informations souhaitées */
fscanf(fp, "%d:%d:%d:%s", &total, &occupe, &dispo, buffer);
/* On ferme le flux */
fclose(fp);
/* On tente de supprimer le fichier */
remove("infos.dat");
/* On affiche les infos */
printf("* Taille totale -> %d\n", total);
printf("* Place occupée -> %d\n", occupe);
printf("* Place disponible -> %d\n", dispo);
printf("* Place occupée (%) -> %.2f%\n", ((float)(occupe) / dispo) * 100.0f);
printf("* Point de montage -> %s\n", buffer);
return EXIT_SUCCESS;
}
A bientôt.
Nico.
Dernière modification par nicolas66 (Le 19/05/2008, à 22:26)
"The computer was born to solve problems that did not exist before." (B. Gates)
Hors ligne
#12 Le 20/05/2008, à 10:15
- elfoiros
Re : L'etat d'un disque dure
nicolas66, comme tu dis, tu es vraiment sympa
Toutes les informations materiels sont stockées dans le repertoire /proc. Les soft comme lshw ou autres vont dans ce repertoire chercher les informations dont ils ont besoin. C'est l'une des spécificités du noyau Linux.
Quand sous windows, il te faut installer SiSoft, sous linux tu tapes juste cat /proc/diskstats
Après, il faut decoder un peu le retour de commande, pour ce faire :
http://linux.derkeiler.com/Newsgroups/comp.os.linux.development.apps/2005-06/0461.html
L'avantage d'une tel architecture, c'est que tu n'a besoin de rien d'autres qu'un noyau.
Coluche : "Bite" c'est un gros mot, même si c'est une petite
Consultant e-commerce
Étude et realisation
Optimisation, maintenance
Hors ligne
#13 Le 20/05/2008, à 13:30
- nicolas66
Re : L'etat d'un disque dure
Après si tu veux faire du monitoring, ya quelques softs sympa : lshw, hddtemp, smartmontool, lm-sensors, etc. lshw est assez complet.
Comme je t'ai déjà dit, tu peux toujours essayer de passer par les libs systèmes mais je pense que c'est se prendre la tête pour pas grand chose ...
"The computer was born to solve problems that did not exist before." (B. Gates)
Hors ligne
Pages : 1