Résumé
La fonction fork fait partie des appels système standard d'UNIX (norme POSIX). Cette fonction permet à un processus (un programme en cours d'exécution) de donner naissance à un nouveau processus qui est sa copie conforme, par exemple en vue de réaliser un second traitement parallèlement au premier. Un bon moyen de visualiser l'effet d'un fork sur un processus est d'imaginer une division cellulaire. Il existe une filiation dans les processus : le créateur d'un nouveau processus est appelé le père et le nouveau processus, le fils. La plupart des attributs système du père (par exemple les droits sur le système de fichier) sont transmis au fils, de la même manière que l'héritage. Au démarrage d'un système Unix, un seul processus existe (de numéro 1). Tous les autres processus qui peuvent exister au cours de la vie du système descendent de ce premier processus, appelé init, via des appels système comme fork, vfork, posix_spawn ou d'autres moyens. Sur les premiers UNIX, seul l'appel système fork permet de créer de nouveaux processus. L'appel système fork fournit une valeur résultat qui est entière. Pour identifier le père du fils nouvellement créé, il suffit de regarder la valeur de retour du fork(). Celle-ci peut être le PID du fils, auquel cas nous sommes dans le processus père, ou bien 0 auquel cas nous sommes dans le processus fils. Le fork() peut également renvoyer la valeur -1, qui traduit une erreur lors de l’exécution de la commande. Afin d'obtenir le numéro du processus, il suffit de faire l'appel système getpid(), ou getppid() pour obtenir le numéro du père. Il est possible d’interagir entre processus de plusieurs manières différentes. Premièrement, on peut envoyer des signaux. En langage de commande kill permet de tuer le processus ayant pour pid ce que l'on entre dans la commande. Il est possible de faire attendre un processus grâce à sleep(n) pour bloquer le processus pendant n secondes, ou en utilisant pause() qui bloque jusqu'à la réception d'un signal.
À propos de ce résultat
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.
Cours associés (3)
CS-300: Data-intensive systems
The purpose of this course is to discuss the design of database and operating systems concepts using a hands-on approach.
CS-323: Introduction to operating systems
Introduction to basic concepts of operating systems.
MATH-213: Differential geometry
Ce cours est une introduction à la géométrie différentielle classique des courbes et des surfaces, principalement dans le plan et l'espace euclidien.
Séances de cours associées (22)
Processus : Aperçu et gestion
Couvre les bases des processus dans les systèmes d'exploitation, y compris la création, la mise en page de la mémoire, les transitions d'état, la virtualisation, les API et l'exécution de programmes.
Systèmes de coordonnées : applications et transformations
Explore les systèmes de coordonnées, y compris les coordonnées polaires et curvilignes, et leurs transformations.
Protection des processus et exécution efficace
Explore l'exécution des processus, la protection et les mécanismes d'exploitation efficaces pour des environnements multi-programmes sécurisés et fiables.
Afficher plus
Publications associées (8)
Concepts associés (17)
Exit (system call)
On many computer operating systems, a computer process terminates its execution by making an exit system call. More generally, an exit in a multithreading environment means that a thread of execution has stopped running. For resource management, the operating system reclaims resources (memory, , etc.) that were used by the process. The process is said to be a dead process after it terminates. Under Unix and Unix-like operating systems, a process is started when its parent process executes a fork system call.
Descripteur de fichier
En informatique, un descripteur de fichier (file descriptor en anglais) est une clé abstraite pour accéder à un fichier (c'est un entier). On utilise généralement ce terme pour les systèmes d'exploitation POSIX. Dans la terminologie de Microsoft Windows et dans le contexte de la bibliothèque stdio.h, on préfère le terme filehandle, bien que ce soit techniquement un objet différent . Dans POSIX, un descripteur de fichier est un entier, et plus spécifiquement dans le langage C, un entier de type int.
Parent process
In computing, a parent process is a process that has created one or more child processes. In Unix-like operating systems, every process except process 0 (the swapper) is created when another process executes the fork() system call. The process that invoked fork is the parent process and the newly created process is the child process. Every process (except process 0) has one parent process, but can have many child processes. The operating system kernel identifies each process by its process identifier.
Afficher plus