-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le Jeudi  7 Février 2002 20:14, vous avez écrit :
> Bonjour,
>
> Qu'appelle-t-on un fork? J'ai cru comprendre que cela correspondait au
> dédoublement d'un programme dont chaque partie fonctionne de façon
> indépendante (on ouvre deux konqueror ou deux Quanta par exemple).
>

Non, cela ce sont des threads.

La création d'un processus est effectuée en dupliquant le processus courant: 
l'appel système fork permet à un processus de créer une copie de lui-même, à 
l'exception de l'identificateur de processus. Le procesus qui s'est dupliqué 
est appelé le processus père, et le nouveau processus est appelé le processus 
fils.

Au retour de fork, deux processus exécutent le même code.

Son prototype est le suivant:

#include <unistd.h>
pid_t fork(void);

Petit exemple:

- --------- creer-processus.c ----------
#include <errno.h>
#include <stdio.h>
#include <unistd.h>

void main (void)
{
        pid_t pid;
        pid= fork();
        if (pid == -1)
                perror ("fork");
        else if (pid == 0)
                printf("Je suis le fils : pid = %d\n", pid);
        else
                printf("Je suis le père : pid = %d\n", pid);
}

- -----------------------------------

L'implémentation de l'appel système fork est située dans le fichier source 
kernel/fork.c .

Si tu veux des explications très précises, tu peux consulter le livre suivant 
(d'où est issu le petit code source C):

"Programmation Linux 2.0: API système et fonctionnement du noyau" par R;Card, 
E.Dumas, F. Mével aux éditions Eyrolles.


> Merci
C'est avec plaisir :o)

> Alain

Marc
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.4 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQE8Y9TvRwOtPf8WOOIRAiCkAKCD08R/ZYY5AUPeMjS27Mj6qXOG9QCfRvpN
X62bIutjwiOLY+lmSsWpR3E=
=gR0F
-----END PGP SIGNATURE-----


Répondre à