2009-08-28 7 views
3

fork est utilisé pour créer une copie du processus à partir de laquelle il est appelé. Ceci est généralement suivi par des appels à la famille de fonctions exec. Y a-t-il d'autres utilisations de la fourchette? Je peux penser à un. Faire IPC avec des fonctions de tuyau.Applications de fourche appel système

Répondre

0

Si vous avez une sorte de serveur à l'écoute des connexions entrantes, vous pouvez utiliser un processus enfant pour gérer la requête entrante (qui n'impliquera pas nécessairement exec ou pipes).

5

Oui bien sûr. Il est assez courant de démarrer un processus, de procéder à l'initialisation des données, puis de générer plusieurs travailleurs. Ils ont tous les mêmes données dans leur espace d'adressage et c'est Copy On Write.

Une autre chose courante est que le processus principal écoute un socket TCP et fork() pour chaque connexion. De cette façon, les nouvelles connexions peuvent être traitées immédiatement alors que les connexions existantes sont traitées en parallèle.

Je pense que vous oubliez qu'après un fork(), les deux processus ont accès à toutes les données qui existaient dans le processus avant le fork().

+0

Oui Bien sûr. Merci. – Ankur

+1

Il y a aussi la "fourche, laissez une instance continuer à travailler et le second point de contrôle l'état de calcul à un stockage stable". – Vatine

+0

Je suppose que cela ne peut pas être réalisé en utilisant seulement plusieurs threads .. est-ce parce que pour allouer de nouvelles ressources (TCP Sockets) nous avons besoin de nouveaux processus et threads seuls ne peuvent pas le faire car ils partagent des ressources communes? –

4

Une autre utilisation de fork est de se détacher du processus parent (revenant à init, processus 1). Si un processus, disons bash avec pid 1111, démarre myserver qui obtient pid 2222, il aura 1111 comme parent. Supposons 2222 forks et l'enfant obtient 3333 pid. Si maintenant le processus 2222 se termine, le 3333 perdra son parent, et à la place il obtiendra init comme son nouveau parent.

Cette stratégie est parfois utilisée par les deamons au démarrage pour ne pas avoir de relation parent avec le processus qui l'a démarré. Voir aussi this answer.

1

Une « utilisation » de la fourche est de créer un Fork Bomb

0

J'ai écrit une petite coquille, et il était plein de fourches (oui c'est exec ..), en particulier pour les éléments de tuyauterie. wikipedia page on pipe

Questions connexes