Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Interface utilisateur ... [ Système / Autre ] (LocalStone)

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é 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 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 é Envoie de Fichier XML a un serveur TCP [ par nico971gwada ] Salut,Je dois envoyer un fichier xml à un serveur TCP et je ne sais absoluement pas comment faire.J'ai crée un ClientTcp puis je l'ai connecté au serv


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 7,379 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.