Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C] Comment vérifier si le programme est déja ouvert ?

Car je fais un lecteur audio mais si on reclique sur l'.exe il se réouvre >_<

    25 octobre 2006 à 15:15:39

    Bonjour ^^


    Tout est dans le titre, je cherche à vérifier si mon programme est déjà ouvert ou non :)
    Y a t-il un paramètre contenant la réponse à ma question car je voudrais aussi le traiter si mon programme est déjà ouvert.


    Merci d'avance ;)
    • Partager sur Facebook
    • Partager sur Twitter
      25 octobre 2006 à 15:42:06

      Sinon tu fais un fichier, où tu mets 1 dedans quand le prog s'ouvre et 0 quand tu le quittes.

      Si le prog est déjà ouvert, alors si l'on essaye de l réouvrir et qu'on lit le fichier, on peut vérifier la valeur qui s'y trouve :
      • Soit c'est 1, dans ce cas, on quitte
      • Soit c'est 0, et dans ce cas, le prog n'est pas encore ouvert, on laisse donc la suite du programme

      Après niveau, propreté de la chose je sais pas si c'est très bien, mais ça a le mérite de marcher sans être dépendant de l'OS.

      Voilà
      • Partager sur Facebook
      • Partager sur Twitter
        25 octobre 2006 à 15:54:01

        Oauis, pas bête, je crois que je vais faire comme ça ^^


        Simple mais utile :D


        P.S. Il y a quand même un problème, je dois ouvrir le fichier en mode non bloquant :-° puisque l'autre doit lire le fichier ....
        ( c'est pas génial avec open(); et close(); >_<:p )
        • Partager sur Facebook
        • Partager sur Twitter
          25 octobre 2006 à 16:07:31

          Mais tu le ferme direct après ;)

          Genre :

          file = fopen ("truc.oc", "r+");

          c = fgetc (file);
          if (c = '0')
              exit (EXIT_SUCCESS);

          fclose (file);


          Et quand tu quittes le programme (après utilisation donc):

          file = fopen ("truc.oc", "r+");
          fputc ('0', file);
          /*ici ça remplacera le '1' car la fonction fputc remplace et n'insère pas de caractère, mais tu peux aussi ouvrir en "w+" pour plus de sécurté ;) */
          fclose (file);


          Voilà !


          EDIT : rajout d'un commentaire
          • Partager sur Facebook
          • Partager sur Twitter
            25 octobre 2006 à 16:09:09

            Oauis, pourquoi pas ^^ je vais essayer :)


            Merci ;) ( j'y avais pas pensé :-° )
            • Partager sur Facebook
            • Partager sur Twitter
              25 octobre 2006 à 16:28:02

              Ou plus simple, qd tu demarre le prog tu ouvre (tu créé) le fichier, et tu le supprime quand tu quitte.
              SI le fichier existait deja, tu quitte le programme.

              Meme pas bessoin d'ecrire dedans ! ;)
              • Partager sur Facebook
              • Partager sur Twitter
                25 octobre 2006 à 16:29:41

                Citation : Pierre89



                file = fopen ("truc.oc", "r+");

                c = fgetc (file);
                if (c = '0')
                    exit (EXIT_SUCCESS);

                fclose (file);




                >>> Faudrait peut-être fermer le fichier avec le programme non ?

                int close = 0;
                file = fopen ("truc.oc", "r+");

                c = fgetc (file);
                if (c = '0')
                    close = 1;

                fclose (file);
                if(close) exit(EXIT_SUCCESS);
                • Partager sur Facebook
                • Partager sur Twitter
                  25 octobre 2006 à 16:40:29

                  Citation : Vinc'

                  Citation : Pierre89



                  file = fopen ("truc.oc", "r+");

                  c = fgetc (file);
                  if (c = '0')
                      exit (EXIT_SUCCESS);

                  fclose (file);




                  >>> Faudrait peut-être fermer le fichier avec le programme non ?


                  int close = 0;
                  file = fopen ("truc.oc", "r+");

                  c = fgetc (file);
                  if (c = '0')
                      close = 1;

                  fclose (file);
                  if(close) exit(EXIT_SUCCESS);


                  Tout à fait je suis impardonnable ;) !

                  Mais y'a encore plus simple que de passer par un booléen :

                  file = fopen ("truc.oc", "r+");

                  c = fgetc (file);
                  fclose (file);
                  if (c = '0')
                      exit (EXIT_SUCCESS);
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    25 octobre 2006 à 16:42:45

                    Mais si, pour une raison où pour une autre, je ferme violemment le programme (plantage...?), le fichier sera toujours là. Et je pourrait plus lancer le lecteur audio...
                    • Partager sur Facebook
                    • Partager sur Twitter
                      25 octobre 2006 à 16:45:18

                      Exact, c'est ce que je viens de me rendre compte !!

                      Quand on fais quelque chose et que ça ne termine pas par la fonction main(); alors le 1 reste dans le fichier ! :D


                      Je fais quoi maintenant ? :p



                      [EDIT] Je pourrais traiter le signal SIGHUP mais il n'y a pas plus simple :o
                      • Partager sur Facebook
                      • Partager sur Twitter
                        25 octobre 2006 à 19:28:25

                        Pour l'instant tu ne peux pas ouvrir le fichier avec le bloc note et le modifier toi même ?
                        (Je dit POUT L'INSTANT car en pratique, les utilisateurs ne vont pas s'amuser à faire ça à chaque fois que le programme plante !)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          25 octobre 2006 à 19:38:07

                          Tu pourrai écrire dans le flux stantard stderr...
                          Au lieu de créer un fichier toi même.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            25 octobre 2006 à 19:39:36

                            Ouais, mais pour l'instant j'ai un énnnnnnnorme bug qui est survenu dans le programme donc je dois m'en occuper en 1er :)


                            Merci des réponses ^^
                            • Partager sur Facebook
                            • Partager sur Twitter

                            [C] Comment vérifier si le programme est déja ouvert ?

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown