Précédent   Forum des professionnels en informatique > Systèmes > Linux > Système
Système Vos questions autour de l'administration système
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/05/2008, 15h08   #1
Futur Membre du Club
 
Inscription : juin 2007
Messages : 91
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 91
Points : 15
Points : 15
Par défaut gestion de la mémoire

Bonjour,
je souhaite récuperer quelques valeurs de mon programme en C qui tourne sous Ubuntu.
Ce que je veux, c'est m'en resservir plus tard, lors d'une autre application(enfin dès que je coupe le programme et que je le rallume).
Je voudrais faire une sorte d'enregistrement dans un fichier texte, mais l'ouverture et l'ecriture dans un fichier est trop long pour ce que je veux faire.
Quelqu'un a une idée pour savoir commet je dois proceder?
Sylar44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 17h07   #2
Membre éprouvé
 
Homme
Ingénieur systèmes et réseaux
Inscription : août 2007
Messages : 508
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : août 2007
Messages : 508
Points : 464
Points : 464
Citation:
Envoyé par Sylar44 Voir le message
Bonjour,
je souhaite récuperer quelques valeurs de mon programme en C qui tourne sous Ubuntu.
Ce que je veux, c'est m'en resservir plus tard, lors d'une autre application(enfin dès que je coupe le programme et que je le rallume).
Je voudrais faire une sorte d'enregistrement dans un fichier texte, mais l'ouverture et l'ecriture dans un fichier est trop long pour ce que je veux faire.
Quelqu'un a une idée pour savoir commet je dois proceder?
publicStaticVoidMain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2008, 08h57   #3
Futur Membre du Club
 
Inscription : juin 2007
Messages : 91
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 91
Points : 15
Points : 15
oui ca vous parait bizarre aussi
autant enregistrer ces valeurs en cas d'erreurs ou en cas de fermeture, c'est ce qu'il y a de mieux dans la limite du possible non?
Sylar44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2008, 09h21   #4
Membre chevronné
 
Avatar de valefor
 
Inscription : décembre 2006
Messages : 689
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 689
Points : 666
Points : 666
Que sont ces valeurs ?

Des variables représentant l'état du programme ?
Un dump mémoire ?
Autres choses ?
valefor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2008, 11h18   #5
Futur Membre du Club
 
Inscription : juin 2007
Messages : 91
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 91
Points : 15
Points : 15
oui c'est ca des valeurs qui représente l'état du programme mais aussi de l'automate associé.
Sylar44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2008, 11h32   #6
Membre chevronné
 
Avatar de valefor
 
Inscription : décembre 2006
Messages : 689
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 689
Points : 666
Points : 666
Tu as donc une structure que tu peux sauver en l'écrivant dans un fichier de conf (binaire, texte, xml, etc...). Ce fichier sera rechargé au démarrage de ton appli.

C'est le même principe d'une sauvegarde de jeux que tu veux ?
valefor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2008, 13h09   #7
Futur Membre du Club
 
Inscription : juin 2007
Messages : 91
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 91
Points : 15
Points : 15
oui c'est ca en quelques sortes

le problème c'est que le temps d'ecriture et de lecture doivent être rapide
en millisecondes au maximum

sinon je charge les données qu'en quand il y a une panne sur l'automate et que je change un bout de programme mais en cas de coupure de courant ca fait mal
Sylar44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2008, 13h21   #8
Membre chevronné
 
Avatar de valefor
 
Inscription : décembre 2006
Messages : 689
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 689
Points : 666
Points : 666
Effectivement, en cas de coupure...

Une solution serait de régulièrement écrire ton état sur le disque. Tu perds juste ce qui s'est passé dans ton intervalle d'écriture.

Ou si tes données constituent un état qui ne change pas trop souvent, tu écris à chaque changement d'état.

A réfléchir.
valefor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2008, 16h34   #9
Futur Membre du Club
 
Inscription : juin 2007
Messages : 91
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 91
Points : 15
Points : 15
oui mais là si j'écris pendant que l'atomate tourne, je ne peux pas faire tout ce que je veux faire car je dois pouvoir le suivre( si je peux accéder à la dizaine de micro-secondes ca serait bien) et si j'écris dans un fichier pour tout sauver c'est trop long pour moi
Sylar44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2008, 23h27   #10
Membre émérite
 
Avatar de FloMo
 
Inscription : juillet 2004
Messages : 714
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 714
Points : 898
Points : 898
Théoriquement, si tu enregistres tes données via des flux ( fopen, fclose ) , tes accès seront très rapides ( je parcours un fichier indexé de 2200 x 2Mo en moins de 2s ) .
Il te suffit alors de vider le tampon de temps en temps pour t'assurer que les données sont écrites.
FloMo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2008, 08h46   #11
Membre chevronné
 
Avatar de valefor
 
Inscription : décembre 2006
Messages : 689
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 689
Points : 666
Points : 666
Tu ne peux pas faire un thread basse priorité qui a accès au disque pour la sauvegarde ?
valefor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2008, 16h57   #12
Futur Membre du Club
 
Inscription : juin 2007
Messages : 91
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 91
Points : 15
Points : 15
et on fait ca comment valefor?
Sylar44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2008, 03h37   #13
Membre du Club
 
Inscription : avril 2008
Messages : 69
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 69
Points : 47
Points : 47
Fait une recherche pour pthread

http://www.google.ca/search?as_q=pth...s=&safe=images
Elv13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2008, 16h02   #14
Futur Membre du Club
 
Inscription : juin 2007
Messages : 91
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 91
Points : 15
Points : 15
Ben je trouve pas ca terrible, surtout si je dois appeler des programmes tout les n microsecondes(voir tout les n millisecondes)
Sylar44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2008, 22h22   #15
Membre éprouvé
 
Homme Marwan Rabbaa
Technophile Web
Inscription : mai 2007
Messages : 930
Détails du profil
Informations personnelles :
Nom : Homme Marwan Rabbaa

Informations professionnelles :
Activité : Technophile Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2007
Messages : 930
Points : 412
Points : 412
Envoyer un message via MSN à sliderman Envoyer un message via Yahoo à sliderman
Citation:
Envoyé par Sylar44 Voir le message
Ben je trouve pas ca terrible, surtout si je dois appeler des programmes tout les n microsecondes(voir tout les n millisecondes)
ben tu fait un programme multithread

venant du java, je ne sais pas trop si tu peux le faire en C (sans le ++)
à mon avi faire trois thread
1 => programme
2 => sauvegarde (tu peux l'ordmire et le réveiller)
3 => contact avec les autres appli
__________________
http://aldorande.miniville.fr/ind
Fedora 8, eclipse 3.3 sur x86_64
--------------
Colorer votre code php
sliderman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2008, 08h55   #16
Futur Membre du Club
 
Inscription : juin 2007
Messages : 91
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 91
Points : 15
Points : 15
oui mais le problème c'est que mon programme tourne sur un automate
si je fais un enregistrement en me servant de threads, le programme risque d'être completement déphasé avec ce qui arrive sur l'automate(un enregistrement dans un fichier c'est trop long, plursieurs millisecondes), il doit bien avoir une autre solution, comment les constructeurs de logiciels automatiques font? je pense pas que c'est comme ca, en tout cas.
Sylar44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2008, 10h13   #17
Membre chevronné
 
Avatar de valefor
 
Inscription : décembre 2006
Messages : 689
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 689
Points : 666
Points : 666
Pour avoir travaillé sur un projet dans lequel on a eu ce genre de problème, je peux te dire que la solution des threads n'est pas délirante.

Dans notre cas, on écrivait régulièrement dans une EEPROM. Ce n'est pas un fichier, mais, c'est pareil, cela demandait des "accès lents". Un thread avait donc été fait pour désynchroniser les accès à l'EEPROM. Périodiquement (disons T secondes), on écrivait l'état de l'appareil en eeprom. En cas de coupure, on perdait au maximum T secondes.
Bien sûr, suivant le média sur lequel tu écris, il faut mettre en place un mécanisme de détection de corruption.
valefor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2008, 10h41   #18
Futur Membre du Club
 
Inscription : juin 2007
Messages : 91
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 91
Points : 15
Points : 15
voilà, c'est ca que je veux utiliser
une EEPROM ca à vraiment l'air bien

Il me reste plus qu'à savoir comment l'utiliser

Merci valefor
Sylar44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2008, 18h32   #19
Membre émérite
 
Avatar de Celelibi
 
Inscription : janvier 2004
Messages : 990
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 990
Points : 822
Points : 822
Je ne comprend pas bien pourquoi c'est si dérangeant de perdre une centaine de millième de seconde pour écrire sur disque. Si tu ne fais ça que toutes les secondes, voire, toutes les 10 secondes, le temps d'écriture sera vraiment insignifiant par rapport au temps de calcul.
Si tu veux vraiment ne pas devoir bloquer le temps de l'écriture, tu place l'écriture dans un thread. Malheureusement ça nécessite d'utiliser des mutex si tu ne veux pas écrire des choses corrompues sur le disque, et les mutex sont assez lents...

Sylar44, je ne suis pas sûr que tu gagnerai du temps à écrire sur une EEPROM au lieu du disque dur.
__________________
Les vaches ne peuvent PAS voler, quoi qu'elles aient pu vous raconter.
Celelibi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2008, 09h27   #20
Membre actif
 
Inscription : mai 2008
Messages : 157
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2008
Messages : 157
Points : 160
Points : 160
shmget() devrait faire l'affaire ;-)
milouz123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h46.


 
 
 
 
Partenaires

Hébergement Web