Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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

#3 Le 18/05/2008, à 15:48

VinsS

Re : L'etat d'un disque dure

Salut, il y a aussi smartmontool.

Les explications ici :

http://doc.ubuntu-fr.org/bug-gutsy?s=bug%20gutsy#disque_dur

vincent


Vincent
Oqapy      Qarte      PaQager

Hors ligne

#4 Le 18/05/2008, à 15:49

lenetfm

Re : L'etat d'un disque dure

Astier a écrit :

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

elfoiros a écrit :

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

elfoiros a écrit :
 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

nicolas66 a écrit :

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 hmm. 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 smile

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