Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1193 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  C++ Fermer l'execution d'un fichier.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

C++ Fermer l'execution d'un fichier.

n°2094539
Squat64320
Posté le 10-08-2011 à 17:42:47  profilanswer
 

Bonjour,
Je suis nouveau sur ce site, et par la même occasion gros débutant en programmation.
J'ai essayé de faire (avec l'aide de forum/tuto) un petit programme en C++ je vous explique:
Le programme  a pour but de récupérer dans un fichier txt le chemin d'accès d'un fichier et de l'exécuter.
Il vérifie ensuite toute les 10 secondes si le fichier n'a pas changé et si il a changé il exécute le nouveau chemin d'accès du fichier.
Tout cela fonctionne, mais mon soucis c'est que je souhaite que lorsque le chemin d'accès dans mon fichier txt a changé il ferme le précèdent fichier et exécute le nouveau, pour le moment il exécute le nouveau mais garde le précédent ouvert.
 
Voici mon code au cas où:  
 

Code :
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include "windows.h"
  5. std::string enTete(const std::string &nomFichier)
  6. {
  7. std::ifstream fichier("D:\\test.txt" );
  8. std::string ligne;
  9. if (fichier.is_open())
  10. {
  11.  std::getline(fichier, ligne);
  12.  fichier.close();
  13.  std::cout << ligne.c_str() << std::endl;
  14. }
  15. else
  16. {
  17.  std::cerr << "Impossible d'ouvrir le fichier en lecture : " << nomFichier.c_str() << std::endl;
  18. }
  19. return ligne;
  20. }
  21. int main()
  22. {
  23. std::string ligne1, ligne2;
  24. while(true)
  25. {
  26.                 ligne1=enTete("D:\\test.txt" );
  27.  if(ligne2.compare(ligne1)!=0)
  28.  {
  29.      
  30.   system(ligne1.c_str());
  31.   ligne2=ligne1;
  32.  }
  33.          Sleep(10000);
  34. }
  35. }

mood
Publicité
Posté le 10-08-2011 à 17:42:47  profilanswer
 

n°2094788
ptitchep
Posté le 11-08-2011 à 21:21:17  profilanswer
 

Salut,
Sous Linux: fork/exec puis kill pour envoyer un signal au nouveau processus.
Sous Windows : quelque chose comme CreateProcess http://msdn.microsoft.com/en-us/li [...] 85%29.aspx qui doit te donner les infos nécessaires pour tuer ton processus fils j'imagine.

 

j'ai trouvé ça aussi: http://msdn.microsoft.com/en-us/li [...] 85%29.aspx

 

De tête je dirais qu'on peut faire if (ligne1 == ligne2) mais du devrais initialiser ligne2 avant de l'utiliser.


Message édité par ptitchep le 11-08-2011 à 21:31:38

---------------
deluser --remove-home ptitchep
n°2095005
Squat64320
Posté le 12-08-2011 à 18:00:45  profilanswer
 

Ok merci j'ai regardé du côté des shellexecute , le seule problème c'est que j'arrive à exécuter un fichier avec son programme par défaut en mettant son chemin d'accès absolu, comme ceci dans les paramètres shellexecute:
 
ExecuteInfo.lpFile       = "D:\\Powerpoint_Losinger-Marazzi_F.ppt";
ExecuteInfo.lpParameters = 0;
 
 mais je sais pas comment faire en mettant la variable contenant les chemin d'accès des fichiers récupéré dans le fichier texte (par exemple: ligne1.c_str()) :x

n°2095085
breizhbugs
Posté le 13-08-2011 à 15:08:04  profilanswer
 

Squat64320 a écrit :

Ok merci j'ai regardé du côté des shellexecute , le seule problème c'est que j'arrive à exécuter un fichier avec son programme par défaut en mettant son chemin d'accès absolu, comme ceci dans les paramètres shellexecute:
 
ExecuteInfo.lpFile       = "D:\\Powerpoint_Losinger-Marazzi_F.ppt";
ExecuteInfo.lpParameters = 0;
 
 mais je sais pas comment faire en mettant la variable contenant les chemin d'accès des fichiers récupéré dans le fichier texte (par exemple: ligne1.c_str()) :x


Bonjour,
tu devrais donner plus de code mais au vu de ce que tu dis ca devrait être

Code :
  1. ExecuteInfo.lpFile       = ligne1.c_str();
  2. ExecuteInfo.lpParameters = 0;


?


---------------
Seul Google le sait...

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  C++ Fermer l'execution d'un fichier.

 

Sujets relatifs
[C] : Problème avec la fonction system[ C# ] ListView qui consomme un max
Spécial pack-->telecharger des cours complets de: C,C++,JAVA,GTK,Linuxproblème sur tableau C++
Communication PHP / C++ via un socket UNIX => blocage read/writeExecution fonction stockée dans table SQL
call a C function from another function !Vérification de la bonne exécution d'une requête
Mise en page d'après une fichier de donnéeswarning: ISO C forbids assignment between function pointer and `void *
Plus de sujets relatifs à : C++ Fermer l'execution d'un fichier.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR