begin process at 2012 02 12 12:25:49
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Système

 > 

Autre

 > 

Interface utilisateur ...


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

Interface utilisateur ...

vendredi 28 décembre 2007 à 21:38:51 | Interface utilisateur ...

LocalStone

Salut à tous,
J'ai encore besoin de vos services ! J'ai un petit soucis que je ne comprends pas trop. Pour l'école, je dois faire un programme que l'on doit contrôler à grâce à un prompt ... En fait, c'est un petit serveur bateau que l'on peut lancer (commande START), arrêter (commande STOP) et redémarrer (RESTART).
Concrêtement, on arrive dans le shell et on lance le serveur :
$ ./server
Du coup, c'est le prompt du serveur qui prends la main :
Serveur >
Et là, il suffit de lui taper ce que l'on veut faire (par exemple le lancer) :
Serveur > START
Et il fait ce qu'on lui demande ... 

Le truc, c'est que j'ai jamais fait ça ! Du coup, j'ai tenté quelque chose ... On fait un fork dès le départ : le processus père correspond alors à la boucle du serveur (un truc avec des sockets et tout ça, mais là c'est un autre problème ) et le processus fils correspond à la la boucle utilisateur (le prompt qui affiche serveur et tout et tout). Sauf qu'en fait ... Bah je sais plus comment faire. Quels moyens je dois mettre en oeuvre pour faire communiquer les 2 processus ? Les signaux ? Autre chose ? Quoi ?
En plus, le code suivant provoque une boucle infinie dès le lancement (chose qui ne se produisait pas avant que j'implémente le fork() ...). Donc si quelqu'un peut m'aider, je l'en remercie d'avance !

void runUIProcess()
{
   while(1)
   {
      int intUserCommand = -1;  
      intUserCommand = getUserCommand();
      if(intUserCommand == UNKNOWN_COMMAND) warnUser("Commande inconnue. ");
      if(intUserCommand == QUIT_PROGRAM_COMMAND)
      {
         informUser("Bye ! ");
         return;
      }
      executeServerCommand(intUserCommand);
   }
}

int main()
{
   int intServerProcessID = -1;
   intServerProcessID = getpid();  

   int intUIProcessID = -1;
   intUIProcessID = fork();  
   if(intUIProcessID == -1) raiseError("fork()");  
  
   if(intUIProcessID == 0)
   {
      intUIProcessID = getpid();
      runUIProcess();
      return EXIT_SUCCESS;     
   }
   else
   {
      printf("[%d] Je suis le processus Serveur ! \n", intServerProcessID);
   }
  
   return EXIT_SUCCESS;
}



LocalStone
vendredi 28 décembre 2007 à 21:39:35 | Re : Interface utilisateur ...

LocalStone

Ha oui ! Je suis Ubuntu 7.04 ... Je sais pas si c'est bien utile de le préciser, mais on sait jamais !

LocalStone
vendredi 28 décembre 2007 à 21:41:58 | Re : Interface utilisateur ...

LocalStone

Et encore une chose ... Je vous fait grâce du code des fonctions du genre raiseError() et tout ça. Je pense que le nom est suffisement clair pour que j'ai à éviter d'expliquer chacune des fonctions !

LocalStone


Cette discussion est classée dans : serveur, processus, fork, intusercommand, intuiprocessid


Répondre à ce message

Sujets en rapport avec ce message

processus sous linux [g++] [ par satanik_mike ] Bonjour,Je suis en train de d?velopper un serveur POP, SMTP en C++ sous linux, mais je bloque sur une petit probl?me d'ex?cution.J'ai fait un ex?cutbl Processus (HWP) multiple C sous UNIX? [ par cbismuth ] Bonjour à tous!Une question me rend fou depuis plusieurs jours...Je souhaite créer N processus (HWP, pas des threads) en C sous UNIX avec une boucle " Recherche programmeur C [ par samy7cav ] Bonjour, Voilà pour un sujet dans le cadre d'une formation en info, j'ai un projet à faire en C. Si quelque pense pouvoir m'aider ou même répondre à s fork() et ressource partagée [ par iam_myst ] Bonjour, Je voudrais créer un programme ou je souhaite partager une ressource entre un processus père et un processus fils. j'ai ma ressource déclarée fork et tcp [ par majong ] Bobjour, peut-on faire un serveur pour multi-client avec tcp en utilisant fork ?Mon problème c'est que j'ai le programme mais sans utiliser fork, ce d Utilité du fork() [ par LocalStone ] Salut à tous, Alors voilà ma question ... A quoi sert la fonction fork() ?On fait de la programmation système à l'école et on a vu qu'il existait une Construire un réseau de processus [ par gravedygger ] Bonjour à tous, N'ayant trouver de réponse nulle part je compte sur vous pour me donner des piste pour un TP de réseau dont voici le sujet. Mes questi processus sous unix [ par atefensi ] Je veux vous poser quelque question sur les processus sous unixJ'ai le programme suivantMain(){ int i=0 ;If(fork()==0){i=1 ;Exit(i) ;i=2 ;}Printf("%d" Serveur web [ par dralou ] Bonsoir tout le monde !J'aimerais savoir s'il existe un faq qui permettrait de savoir comment créer son propre serveur web en langage de programmation Passer des arguments à un Thread & framework 2.0 [ par nico971gwada ] Salut,Je dois faire une interface graphique qui permet de s'échanger des fichiers xml.Sans trop rentrer dans les détails je dois faire 2 serveur UDP é


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 0,406 sec (4)

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