begin process at 2012 05 28 18:02:43
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Linux

 > 

Fichier & Disque

 > 

Détection de la fin d'écriture d'un fichier par un autre programme


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Détection de la fin d'écriture d'un fichier par un autre programme

jeudi 19 février 2009 à 10:19:58 | Détection de la fin d'écriture d'un fichier par un autre programme

nanard1402

jeudi 19 février 2009 à 10:23:56 | Re : Détection de la fin d'écriture d'un fichier par un autre programme

nanard1402

Bonjour à tous,

Désolé pour le premier message fausse manip.

Je vous explique le contexte : j'ai un programme qui contact un 2éme programme via des sockets tcp pour lui demander de générer un son wav. Pour certaines raisons, la communication avec le programme qui génére le son doit être unidirectionnelle : Je peut demander à ce programme de générer le son, mais ce programme ne peut pas me répondre.

Donc voila ce qui se passe : mon programme demande au générateur de son de créer un fichier wav. Ensuite, mon programme doit récupérer le fichier wav pour l'envoyer sur le réseau. Le problême est que le générateur de son n'a pas la possiblité de me dire à quel moment il a fini de générer le son.

J'ai commencé par me basé sur la date de modification du fichier mais cette date est mise à jour dès que le générateur de son commence à modifier le fichier wav et donc, je récupère un fichier wav auquel il manque des données.
Je me suis ensuite basé à la fois sur la date de mofdification et sur la taille du fichier avec le code suivant :

void  coach::waitForFile(const string fileName)
{

  string now = getNow();
  while(isLower(getLastModifTime(fileName)),now))
    sleep(0.1);
  off_t lastSize = 0;
  while(lastSize < getSize(fileName))
  {
    lastSize = getSize(fileName);
    sleep(0.1);
  }
}

Toutes les fonctions utilisées dans cette méthode fonctionnent.

getNow() -> Récupére le temps actuel
getLastModifTime(fileName)->Récupére la date de dernière modification du fichier.
isLower(date1,date2)->Compare deux dates entre elles
getSize(fileName)->Récupère la taille du fichier.


Même avec cette méthode, je récupère un fichier wav incomplet.

Qualqu'un saurait pourquoi? Y a t-il une autre manière de réaliser ça ?

Merci d'avance.
jeudi 19 février 2009 à 11:16:29 | Re : Détection de la fin d'écriture d'un fichier par un autre programme

SebLinck

En C:

while(r>0)
r = recev(...)


Cordialement,
Sébastien.
jeudi 19 février 2009 à 11:24:55 | Re : Détection de la fin d'écriture d'un fichier par un autre programme

ed73

Si c'est toi qui écrit également le générateur de son, une méthode simple serait qu'il crée un fichier quelconque lorsqu'il a fini de créer le .wav. Ton programme n'a plus qu'à tester l'existence de ce fichier et à l'effacer après récupération du .wav.

Sinon ton appel à sleep(0.1) me semble curieux, la durée de sleep est normalement en millisecondes.

ed73
jeudi 19 février 2009 à 11:36:52 | Re : Détection de la fin d'écriture d'un fichier par un autre programme

nanard1402

Merci pour vos réponses.

Mon problême est que je ne peut pas modifier le générateur de son.
Je dev sous Linux et le sleep de unistd est en sec.

Je n'ai pas compris ta réponse SebLinck pourrait tu la détailler un peu plus stp ?

Merci
jeudi 19 février 2009 à 13:20:14 | Re : Détection de la fin d'écriture d'un fichier par un autre programme

SebLinck

Ben le recev(...) te renvois le nombre d'octet copié,
quand il renvois 0c'est qu'il ni a plus rien a copier
donc ton transfert est finni.

Cordialement,
Sébastien.


Cette discussion est classée dans : fichier, fin, programme, détection, écriture


Répondre à ce message

Sujets en rapport avec ce message

Vérifier un header de fichier... [ par MorZong ] Salut,Voilà j'ai créer un programme (simple, pas avec API) de cryptage tout simple et je voudrais qu'il ait sont propre genre de fichier. Alors j'ai m traitement d'un fichier txt [ par sylvain ] Bonjour,Je doit effectuer un traitement sur un fichier txt.Je reçoit un fichier txt sous cette forme :// début fichierdébut annonce..........@ fin ann erreur de demarrage programme [ par nango ] Quand je compile sous visual c++ il m'apparait le message d'erreur suivant : "un fichier.DLL requis, MSPDB60.DLL, n'a pas été trouvé".Pourtant ce fich Fin du programme en C++? [ par jia2812 ] Salut, au risque de me faire passer pour 1 c... ou pour qqu'1 qui n'a pas assez lu le forum, je commence juste le C++... Voilà, je voulais savoir l'é Pb de compilation [ par Cyberboy2054 ] Salut J' ai un piti problème de compilation en C++Quand j' ai terminé mon programme (un aplication console)je teste mon programme depuis le compilateu Poblèmes pour lire un fichier audio dans un programme C++ [ par Nicolas ] Pour un projet C++ (linéaire),il souhaiterais réalisé une bibliothèque musical(.mp3, .wav). J'aurais besoin pour ca de lire les fichiers audio mais je AIDE programme supprimer un fichier ! SVP [ par nico ] salut à tous,je suis un gros nul en c++ , je viens de telecharger dev-c++ et j'aimerais faire mon premier programe tout simple pour supprimer un fichi lire un fichier d'option [ par Vinsou ] Je dévellope un projet sous linux. Dans ce programme j'ai des variables qui contiennent le chemin de fichiers se trouvant sur le système, qui doivent QUESTION ya T IL UN AUTRE MOYEN EN RESEAU ? [ par bily ] Vegeta :-)comment faire pour envoyer un fichier par programme ??je programme en c++builder et j'utilise les socketsG 1 IDEE mais est ce la BONNE ?Li ouverture d'un fihier au lancement d'un programme [ par spirit ] j'aimerai savoir comment connaitre le nom d'un fichier lors de l'execution du programme associé à ce fichierex: quand on clique sur un fichier .txt, B


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,669 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales