2 fonctions en mm temps en c++

Résolu
lolokiller91 Messages postés 116 Statut Membre -  
tuxun Messages postés 388 Statut Membre -
Bonjour,
Je voudrai créer une fonction qui me permettent de quitter la boucle for que j'ai créer mais sans que cette fonction n'empeche pas la boucle for de continuer dee fonctionner.

Merci a toute aide conseil ou lien hépertexte. :-I
Configuration: Windows XP
Internet Explorer 6.0
Dev C++

7 réponses

  1. tuxun Messages postés 388 Statut Membre 34
     
    Alors dans le principe cela consiste a créer un sous processus avec fork()

    Il veut ceci:
    (pseudo-code, le vrai est un peu rouillé)
    for ( )
    {
    while(kekchose)
    fork(tachenonbloquante();) //s'ecute en tachhe de fonds Pfiooou va falloir que j'me remmete
    }

    http://www.commentcamarche.net/faq/sujet 10611 que fait un fork
    //en bon C cette fois, normalement
    ceci t'aidera aussi:
    switch(fork())
    {
    case -1 : perror("Probleme fork); exit(1);break;
    case 0: //tu es dans le fils fais ce que tu veuxexit(1);break;
    default : /*tu es dans le pere fait ce que tu veux*/ break;
    }

    http://gd.tuwien.ac.at/languages/c/programming-dmarshall/section2_22_22.html

    Cdt,
    -Tuxun- tuxun.the.free.linuxian@gmail.com
    1
  2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Salut,
    Tu pourrais donner un exemple ? Car j'ai pas tout compris.
    0
    1. lolokiller91 Messages postés 116 Statut Membre 5
       
      Par exemple:

      for (int m = 0 ; ; m++)
      {
      result = v-m;

      if (result==0)
      cout << "attention!";

      if (result <= -1)
      {cout << "Stop!";
      break;}

      Sleep(10000); // Sleep(nombre) attendre le temps en millisecondes entre parenteses
      cout << "Voulez-vous arrêter la boucle ?";

      getch() ;

      //il faudrait que ca ne bloque pas le programme

      if (getch()==1)
      break; }

      //getch() signifie attendre que l'on appuie sur une touche

      // si ya un équivalent qui ne bloque pas la boucle mais qui attend seulement kon apui sur une touche

      Exemple qui se rapproche de mon programme

      (C) Inc Lolokiller91 . 2009 . All rights reserved

      LOL

      Ps; Désolé pour les faute d'orthographe :| J'ai écrit le prigramme à la vavite
      0
    2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847 > lolokiller91 Messages postés 116 Statut Membre
       
      si ya un équivalent qui ne bloque pas la boucle mais qui attend seulement kon apui sur une touche
      Si le programme attend qu'on appuie sur une touche alors le programme n'ira pas plus loin.
      Par contre, si tu veux intercepter une touche pendant le déroulement de la boucle, tu peux utiliser kbhit() de conio.h.
      Par exemple :
      if(kbhit()) { //on entre uniquement si l'utilisateur a pressé des touches, sinon on continue
          char lettre=getchar(); // on récupère la touche stockée dans le buffer.
      }
      

      Cdlt
      0
    3. lolokiller91 Messages postés 116 Statut Membre 5
       
      help
      0
    4. lolokiller91 Messages postés 116 Statut Membre 5 > fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention  
       
      #include <iostream>
      #include <windows.h>
      #include <conio.h>

      using namespace std;
      typedef unsigned short int usi;

      int main()
      {
      getch();
      usi m = 0;
      usi h = 0;

      for(;;)
      {
      if (kbhit())
      {
      break;
      cout<<"Salut";
      }
      system ("cls");
      if (m<10)
      cout << "0"<<h<<"H0"<<m<<"\n\n";
      else
      cout << "0"<<h<<"H"<<m<<"\n\n";
      m++;
      if (m>59)
      {
      m=0;
      h++;
      }

      }

      system("PAUSE");
      return EXIT_SUCCESS;
      }

      Voici mon programme .
      J'ai un problème maintenant c qu'il me met un message d'erreur que voici:
      [Linker error] undefined reference to `__cpu_features_init'
      ld returned 1 exit status


      Help!!!!!!!!!
      0
    5. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847 > lolokiller91 Messages postés 116 Statut Membre
       
      Il faut éviter les mélanges d'en-têtes.
      Enlève le include stdlib.h. En C++, on utilise cstdlib (que tu as déjà inclus).

      Sinon pour l'erreur, cela peut venir du fait d'un mauvais mélange de bibliothèques. Du genre installer Dev-Cpp et Code::Blocks ou MingW ou autre.
      Est-ce le cas ?

      Cdlt
      0
  3. tuxun Messages postés 388 Statut Membre 34
     
    re:tuxun
    et je suis tombé la-dessus 5mn après:
    http://kafka.fr.free.fr/docs/prog_syst_linux-html/html/slide_35.html
    T'a vu y a un getpid!!!

    Je connaissais pas mais cela va m'être très utile pour mon "sur-noyau" Linux (vtty/shell/framework)
    notamment pour écrire un Os virtuel par-dessus Linux (comme User Mode Linux mais pas comme Unified Modeling Language ;-) )

    Salut!
    -Tuxun-
    0
  4. lolokiller91 Messages postés 116 Statut Membre 5
     
    Le léger problème c'est que je n'ai pas Linux et ne connais pas le C. J'ai Windows Xp et j'utilise seulement le C++. Alors y a-t-il un équivalent C++ pour Windows.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jamian
     
    Salut,

    Il y a une compatibilité ascendante entre le C et le C++. Tu peux donc utiliser ceci en C++. Fork n'est pas spécifique à Linux et tu peux l'utiliser aussi sous windows.
    0
    1. lolokiller91 Messages postés 116 Statut Membre 5
       
      Il est pas reconnu
      c koi la bibliotheque que t''utilise pour le fr fonctionner
      0
    2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Salut,
      Il y a une compatibilité ascendante entre le C et le C++
      Vrai au début. Mais puisque les deux normes ne sont pas les mêmes, ce n'est pas compatible bien que beaucoup de choses le soient en pratique.

      Fork n'est pas spécifique à Linux et tu peux l'utiliser aussi sous windows.
      Spécifique à Linux non puisque fork est posix. Mais tu ne peux pas l'utiliser sur Windows à moins de l'émuler. Mais c'est de la bricole. En pratique sous windows, on utilise CreateProcess() ou CreateThread (pour la création de threads).
      0
  7. tuxun Messages postés 388 Statut Membre 34
     
    re: Lolokiller91
    la lib c'est <unistd.h>

    Jasmian a raison le C++ est une façon différentes d'organiser du C (avec pas mal de rajout c'est vrai)
    mais il y a donc compatiblité...

    Jasmian: Pas toujours, pas vrai? jai eu un probleme avec des void* machin()...

    Salut content d'avoir pu aider!
    0
  8. tuxun Messages postés 388 Statut Membre 34
     
    entre parenthese, la boucle for se met en pause a chaque sleep!
    ce n'est donc pas ce que tu voulais ;)
    0