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 20/04/2008, à 05:57

MohammedBAh

comment peut on avoir la capacite de ram avec C

salut tout le monde;
j'ai cherche partout mais j'ai rien trouve :s j'espere que j'aurai un peu d'aide ici big_smile voila je veux faire un programme C qui me donne la taille de mon disque dure et me liste tout les partitions et pour finir il me donne la taille du RAM et la memoire occupe par le systeme

#2 Le 20/04/2008, à 06:32

Compte anonymisé

Re : comment peut on avoir la capacite de ram avec C

Salut

Je ne sais pas si c'est ce que tu cherches, mais tu peux utiliser la fonction system et récupérer les infos via les commandes :
free
fdisk -l
etc..

@+

#3 Le 20/04/2008, à 06:52

marc_qui

Re : comment peut on avoir la capacite de ram avec C

tres bonne reponse wink c'est effectivement plus simple de passer par system sinon tu vas te prendre la tete

Dernière modification par marc_qui (Le 20/04/2008, à 06:52)

Hors ligne

#4 Le 20/04/2008, à 08:46

human enemy

Re : comment peut on avoir la capacite de ram avec C

Sinon il y a   *libgtop*

"LibGTop is a library to get system specific data such as CPU and Memory Usage and information about running Processes..."

Pour la mémoire tu peux prendre ce bout de code :

/* mises à jour mémoire */
	glibtop_mem mem;
	
	glibtop_get_mem (&mem);
	
	g_return_if_fail ((mem.flags & needed_mem_flags) == needed_mem_flags);
	
	atrium->serveur_memoiretotale = mem.total;
	atrium->serveur_memoirelibre = mem.total-mem.user;
	
	usr = rint (100 * (float)(mem.total-mem.user)  / mem.total);
	atrium->serveur_memoirelibreratio = usr;

<linux user>463160</linux user>
str = g_strdup_printf ("ubuntu user : %d",20328);

Hors ligne

#5 Le 20/04/2008, à 08:46

geenux

Re : comment peut on avoir la capacite de ram avec C

Dans ces cas là, autant faire un script shell quoi...

Hors ligne

#6 Le 20/04/2008, à 11:39

rniamo

Re : comment peut on avoir la capacite de ram avec C

pour windows tu as des fonction qui te donne les réponse, pour linux des fichiers :

/proc/meminfo.

Pour voir ce qu'il y a dedans : cat /proc/meminfo

Aprés en C tu ouvre ce fichier (en super utilisateur!), tu li chaque ligne (fgets()) et recherche un des mot clé qui t'intéresse (strstr() je crois) : "MemTotal:" par exemple.

Tu peut ensuite avoir l'info en kB (un petit atoi() pour la conversion).

voili voilou

edit : tu peux regarder les sources de conky :

void update_meminfo(void)
{
	FILE *meminfo_fp;
	static int rep = 0;

	/* unsigned int a; */
	char buf[256];

	info.mem = info.memmax = info.swap = info.swapmax = info.bufmem =
		info.buffers = info.cached = 0;

	if (!(meminfo_fp = open_file("/proc/meminfo", &rep))) {
		return;
	}

	while (!feof(meminfo_fp)) {
		if (fgets(buf, 255, meminfo_fp) == NULL) {
			break;
		}

		if (strncmp(buf, "MemTotal:", 9) == 0) {
			sscanf(buf, "%*s %llu", &info.memmax);
		} else if (strncmp(buf, "MemFree:", 8) == 0) {
			sscanf(buf, "%*s %llu", &info.mem);
		} else if (strncmp(buf, "SwapTotal:", 10) == 0) {
			sscanf(buf, "%*s %llu", &info.swapmax);
		} else if (strncmp(buf, "SwapFree:", 9) == 0) {
			sscanf(buf, "%*s %llu", &info.swap);
		} else if (strncmp(buf, "Buffers:", 8) == 0) {
			sscanf(buf, "%*s %llu", &info.buffers);
		} else if (strncmp(buf, "Cached:", 7) == 0) {
			sscanf(buf, "%*s %llu", &info.cached);
		}
	}

	info.mem = info.memmax - info.mem;
	info.swap = info.swapmax - info.swap;

	info.bufmem = info.cached + info.buffers;

	info.mask |= (1 << INFO_MEM) | (1 << INFO_BUFFERS);

	fclose(meminfo_fp);
}

Pour le disque dur je ne connais pas le fichier, peut être proc/diskstats

Dernière modification par rniamo (Le 20/04/2008, à 12:02)


< Quelques un des mes programmes  | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
        \   ^__^
         \  (o o)\_______
            (___)\            )\

Hors ligne

#7 Le 20/04/2008, à 18:21

MohammedBAh

Re : comment peut on avoir la capacite de ram avec C

merci pour les reponses je vais les essai smile et esque vous pouvez me donne un lien de tutoriel pour script shell merci infiniment

#8 Le 20/04/2008, à 21:25

MohammedBAh

Re : comment peut on avoir la capacite de ram avec C

rniamo a écrit :

pour windows tu as des fonction qui te donne les réponse, pour linux des fichiers :

/proc/meminfo.

Pour voir ce qu'il y a dedans : cat /proc/meminfo

Aprés en C tu ouvre ce fichier (en super utilisateur!), tu li chaque ligne (fgets()) et recherche un des mot clé qui t'intéresse (strstr() je crois) : "MemTotal:" par exemple.

Tu peut ensuite avoir l'info en kB (un petit atoi() pour la conversion).

voili voilou

edit : tu peux regarder les sources de conky :

void update_meminfo(void)
{
	FILE *meminfo_fp;
	static int rep = 0;

	/* unsigned int a; */
	char buf[256];

	info.mem = info.memmax = info.swap = info.swapmax = info.bufmem =
		info.buffers = info.cached = 0;

	if (!(meminfo_fp = open_file("/proc/meminfo", &rep))) {
		return;
	}

	while (!feof(meminfo_fp)) {
		if (fgets(buf, 255, meminfo_fp) == NULL) {
			break;
		}

		if (strncmp(buf, "MemTotal:", 9) == 0) {
			sscanf(buf, "%*s %llu", &info.memmax);
		} else if (strncmp(buf, "MemFree:", 8) == 0) {
			sscanf(buf, "%*s %llu", &info.mem);
		} else if (strncmp(buf, "SwapTotal:", 10) == 0) {
			sscanf(buf, "%*s %llu", &info.swapmax);
		} else if (strncmp(buf, "SwapFree:", 9) == 0) {
			sscanf(buf, "%*s %llu", &info.swap);
		} else if (strncmp(buf, "Buffers:", 8) == 0) {
			sscanf(buf, "%*s %llu", &info.buffers);
		} else if (strncmp(buf, "Cached:", 7) == 0) {
			sscanf(buf, "%*s %llu", &info.cached);
		}
	}

	info.mem = info.memmax - info.mem;
	info.swap = info.swapmax - info.swap;

	info.bufmem = info.cached + info.buffers;

	info.mask |= (1 << INFO_MEM) | (1 << INFO_BUFFERS);

	fclose(meminfo_fp);
}

Pour le disque dur je ne connais pas le fichier, peut être proc/diskstats

merci pour la reponse peut tu m'explique un peu smile

#9 Le 21/04/2008, à 14:37

Karl_le_rouge

Re : comment peut on avoir la capacite de ram avec C

Oubliez la fonction system(), elle s*cks grave, un fork + exec c'est à peine plus compliqué.

Hors ligne

#10 Le 21/04/2008, à 16:15

MohammedBAh

Re : comment peut on avoir la capacite de ram avec C

Karl_le_rouge a écrit :

Oubliez la fonction system(), elle s*cks grave, un fork + exec c'est à peine plus compliqué.

alors tu me coneille quoi ?

#11 Le 21/04/2008, à 17:10

nicolas.sitbon

Re : comment peut on avoir la capacite de ram avec C

Hors ligne

#12 Le 21/04/2008, à 18:23

rniamo

Re : comment peut on avoir la capacite de ram avec C

je t'ai passé les sources de conky parce que analyser vite fait un petit fichier comme /proc/meminfo me semble assez simple mais si ceci t'es complexe, suit les conseils précédents : http://www.developpez.net/forums/showthread.php?t=264


< Quelques un des mes programmes  | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
        \   ^__^
         \  (o o)\_______
            (___)\            )\

Hors ligne

#13 Le 22/04/2008, à 09:10

Karl_le_rouge

Re : comment peut on avoir la capacite de ram avec C

MohammedBAh a écrit :
Karl_le_rouge a écrit :

Oubliez la fonction system(), elle s*cks grave, un fork + exec c'est à peine plus compliqué.

alors tu me coneille quoi ?

Au hasard, je dirais fork + exec lol

Hors ligne

#14 Le 22/04/2008, à 09:14

nicolas.sitbon

Re : comment peut on avoir la capacite de ram avec C

Karl_le_rouge a écrit :
MohammedBAh a écrit :
Karl_le_rouge a écrit :

Oubliez la fonction system(), elle s*cks grave, un fork + exec c'est à peine plus compliqué.

alors tu me coneille quoi ?

Au hasard, je dirais fork + exec lol

étant donné qu'il veut avoir le résultat des commandes, c'est plutôt popen() qu'il faut utiliser, de plus c'est vraiment moche de faire fork()+exec().

Hors ligne

#15 Le 22/04/2008, à 09:46

\\Ouranos//

Re : comment peut on avoir la capacite de ram avec C

tu peux aussi taper "tagada keskichof" en ligne de commande... lol


Ubuntu facile, c'est :
- Dire "Bonjour"
- Lire la doc et les règles du forum avant de poster. Savoir poser une question intelligemment.
- Mettre des balises url autour des liens et un tiret à su.

Hors ligne