Processus [Résolu]

Signaler
Messages postés
6
Date d'inscription
mardi 8 juin 2004
Statut
Membre
Dernière intervention
30 septembre 2013
-
Messages postés
117
Date d'inscription
samedi 6 octobre 2012
Statut
Membre
Dernière intervention
17 mars 2014
-
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

Messages postés
3829
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
8 janvier 2021
114
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 !
Messages postés
117
Date d'inscription
samedi 6 octobre 2012
Statut
Membre
Dernière intervention
17 mars 2014

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