Processus

Résolu
jupiter4692000 Messages postés 6 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 30 septembre 2013 - 30 sept. 2013 à 04:29
geeegeee Messages postés 118 Date d'inscription samedi 6 octobre 2012 Statut Membre Dernière intervention 17 mars 2014 - 11 oct. 2013 à 19:25
Bonjour,
les gars, je suis un debutant en langage ANSI C et je n'arrive pas a ecrire un programme en ANSI C qui crée exactement 5 processus. Chaque processus doit imprimer son numéro et un petit message avant de s'arrêter

-merci pour votre aide.-
salut

2 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
30 sept. 2013 à 10:38
Bonjour.

Regarde du côté de "fork", "pipe" et "exec*". Tu te trouveras surement de nombreux exemples sur le web ou même sur ce site.
Pour afficher le "numéro" d'un processus (on parle plutôt de pid), on utilisera "getpid".

Bonne chance !
0
geeegeee Messages postés 118 Date d'inscription samedi 6 octobre 2012 Statut Membre Dernière intervention 17 mars 2014
Modifié par cptpingu le 11/10/2013 à 19:48
Bonjour,

Prototype:
SYSTEM CALL: pipe();

PROTOTYPE: int pipe( int fd[2] );
RETURNS: 0 on success
-1 on error: errno = EMFILE (no free descriptors)
EMFILE (system file table is full)
EFAULT (fd array is not valid)

NOTES: fd[0] is set up for reading, fd[1] is set up for writing

http://www.tldp.org/LDP/lpg/node11.html

Exemple:
#include <iostream>
#include <string>

// Required by for routine
#include <sys/types.h>
#include <unistd.h>

#include <cstdlib>   // Declaration for exit()
int globalVariable = 2;
int main()
{
   std::string identifier;
   int stackVariable = 20;

   pid_t pID = fork();
    if (pID == 0)                // child
    {
       // Code only executed by child process

       identifier = "Child Process: ";
       globalVariable++;
       stackVariable++;
     }
     else if (pID < 0)            // failed to fork
     {
         std::cerr << "Failed to fork" << std::endl;
         exit(1);
         // Throw exception
     }
     else                                   // parent
     {
       // Code only executed by parent process
       identifier = "Parent Process:";
     }
     // Code executed by both parent and child.
    
     std::cout << identifier
                   << " Global variable: " << globalVariable
                   << " Stack variable: "  << stackVariable << std::endl;

  return 0;
}

http://www.yolinux.com/TUTORIALS/ForkExecProcesses.html
0
Rejoignez-nous