CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

utilité de fork ?

linux13-04
linux13-04
Niveau 8
11 mars 2014 à 20:20:18

Salut,

à quoi sert de "forker" un programme ? (je parle bien ici de la fonction fork(), pas du fait de reprendre un projet pour le modifier), j'ai vu le fonctionnement hier, et ça a l'air cool mais aucune utilité ne m'a sautée aux yeux .

Y avez vous déja eu recours ? pour quoi ?

godrik
godrik
Niveau 30
11 mars 2014 à 20:30:07

Dans les systemes posix, fork est la seule facon existante pour creer un nouveau processus. Donc si tu veux ecrire un shell. Il va falloir creer de nouveau processus, et donc faire un appel a fork() a un moment ou a un autre (souvent en le couple a une variante de exec()).

Ca c'est le cas d'ecole. Un cas moins classique mais tout aussi utile est le cas de la gestion de permission. Par exemple, j'ai ecrit un server FTP qui se base sur les permissions de l'utilisateur. Une fois l'identite de l'utilisateur connu, le processus fork et change ses permission pour prendre les permission de l'utilisateur. Ainsi apres authentification toute faille de securite ne donnera pas plus de pouvoir super-utilisateur au mechant hacker.

Un autre cas d'utilisation est pour obtenir de la concurrence dans l'execution d'un service. Par exemple apache demarre de nombreux processus pour pouvoir traiter des clients en utilisants des ressources individuelle.

_skip
_skip
Niveau 10
12 mars 2014 à 07:14:37

Pour ajouter à ce que dit godrik, pour certains langages dans lesquels il n'y a pas de véritable notions de "Thread", créer plusieurs processus est la façon de tirer pleinement profit des multiprocesseurs et multicoeurs. Python en est sauf erreur un exemple.

L'autre avantage qui se rapproche de l'exemple des permissions pour FTP, c'est l'isolation des ressources. Si tu lances un traitement dans un autre process et que celui-ci crée des fuites de mémoire voire se plante en gros feu d'artifice, l'OS va nettoyer tout ça et ton processus principal a toutes les chances de rester dans un état stable.

Mjonir
Mjonir
Niveau 26
12 mars 2014 à 17:08:06

_skip -> Python dispose bien d'une bibliothèque intégrée implémentant la notion de thread: http://docs.python.org/2.7/library/threading.html

Bon après, mon expérience personnelle avec celle-ci est que ça ne marche pas toujours aussi bien que ça devrait :/

godrik
godrik
Niveau 30
12 mars 2014 à 17:29:54

Python a des threads. Mais la derniere fois que j'ai regarder ruby n'avait que des threads utilisateurs et pas de threads systeme. (donc tu peux faire du multi threading mais tout reste sur un seul core).

Caletlog
Caletlog
Niveau 10
12 mars 2014 à 18:51:01

godrik > ça s'est nettement amélioré avec les récentes versions, mais c'est toujours pas ça pour le Ruby MRI (le 'ruby classique'), qui est verrouillé de ce côté là et n'autorise que des 'green threads'. D'une manière générale le langage tend à favoriser et faciliter le fork pour 'compenser'.
Après on a l'implémentation JRuby si c'est vraiment nécessaire.

Pseudo supprimé
Pseudo supprimé 12 mars 2014 à 19:32:32

la lib standard de python a une api pour les threads mais ils ne servent pas a grand chose a cause du GIL

http://en.wikipedia.org/wg/wiki/Global_Interpreter_Lock

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment