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

Fork et pipe en C

Oasis_its_good
Oasis_its_good
Niveau 7
24 janvier 2007 à 14:54:02

:salut:

Je fais du C en SSH, et on a afit les fork.
Le problème c´est que j´y comprend rien, mais absolument rien !! ! :-(

Si quelqu´un avait un site qui reprend tout de A à Z, je lui en serais reconnaissant. :)

:merci:

godrik
godrik
Niveau 30
24 janvier 2007 à 15:10:05

bah c´est facil
quand tu appelles fork, le systeme crée un nouveau processus qui est une copie du processus courant.
La seule différence entre les deux est que dans le processus fils, fork renvoie 0. et dans le processus pere, fork renvoie le PID du fils.

Oasis_its_good
Oasis_its_good
Niveau 7
24 janvier 2007 à 15:16:58

:ok: merci.

Mais le probeme, c´est que ca c´est juste la définition.

J´ai par exemple devant moi un exo :

Ecrire prog qui par la création d´un processus fils, lance par recouvrement la commande pas -u monlogin

Ecrire le prog précédent en faisant en sorte que ca soit le père qui affiche les données générées par la commande du processus fils.

Je demande pas la réponse, loin de là, je demande juste à comprendre l´énoncé. Et comment on voit à l´écran si l´exo est réussi ou pas.

J´ai cherché des tutos sur google, mais ca correspond pas vraiment à ce que je fais.
J´utilise SSH et Exceed avec l´environnement KDE.

Oasis_its_good
Oasis_its_good
Niveau 7
24 janvier 2007 à 15:17:34
  • la commande est ps -u monlogin
godrik
godrik
Niveau 30
24 janvier 2007 à 15:26:35

Je ne comprends pas "par recouvrement", mais j´imagine que ca veut dire que le processus pere attends la fin de l´execution du processus fils.

Regarde les primitive systeme dup, pipe, dup2, execv

Oasis_its_good
Oasis_its_good
Niveau 7
24 janvier 2007 à 15:29:49

:ok:
Vivement que je maitrise le fork et les pipe, ca devient relou de rien comprendre aux cours :-(

Fvirtman
Fvirtman
Niveau 10
24 janvier 2007 à 15:42:15

Ma collegue me dit qu´en effet, c´est important de maitriser les pipes pour avancer dans la vie :oui:

Sinon, fork n´est en effet pas complexe a utiliser :ok:

Oasis_its_good
Oasis_its_good
Niveau 7
24 janvier 2007 à 16:19:11

Si j´avais l´occasion de m´entrainer chez moi, j´auaris p-e fini par comprendre, mais y´a que en cour où il y´a le réseau pour etre sur SSH et KDE. :-(

Fvirtman
Fvirtman
Niveau 10
24 janvier 2007 à 16:42:50

Sous Windows, ça tourne presque pareil.
Fork s´appelle "CreateProcess". Il y a aussi une notion de PID.

Si tu veux t´entrainer sans installer Linux, utilise Cygwinn (un linux dans Windows), ou alors, essaie de te connecter au réseau de ta fac a distance via Telnet.

Quand j´étais a la fac, je pouvais faire ça : il y avait une machine portail, sur laquelle tu pouvais te connecter, puis ensuite prendre le controle des petits terminaux des différentes salles.

godrik
godrik
Niveau 30
24 janvier 2007 à 16:52:34

si tu peux faire un ssh dans ta fac tu dois pouvoir faire un ssh de l´exterieur....
un client ssh pour windows ? --> putty

Tu vas me dire: et comment je fais pour editer mon code ?
Tu viens de comprendre pourquoi je tape sur mes étudiants pour qu´ils sachent utiliser vi et emacs! :)

Fvirtman, non createprocess ne fais pas exactement la meme chose. Je pense qu´il ne fais pas une copie de la mémoire du processus, il en crée un tout autre. Du coup on ne peut pas faire exactement la meme chose.

Fvirtman
Fvirtman
Niveau 10
24 janvier 2007 à 17:08:54

vi, possible. C´est vrai qu´apres, la programmation systeme dépend surtout du systeme. Windows est géré peut etre différemment.

Quoiqu´il en soit, pour faire du fork, de l´extérieur ça doit marcher :)

Oasis_its_good
Oasis_its_good
Niveau 7
24 janvier 2007 à 17:11:12

Le prof nous a dit que le réseau était inaccessible de l´extérieur de la fac.
P-e il existe une solution, mais je suis à des années lumières de pouvoir le faire.

J´pense que j´vais installer Linux sur mon pc, juste pour me familiariser avec l´environnement.
J´attend juste d´avoir ordi + puissant.

dnob700
dnob700
Niveau 10
24 janvier 2007 à 22:22:07

CreateProcess recopie le processus courant (comme fork), mais par contre, passe l´exécution dans le processus fils à une autre procédure. Ce qui me semble être beaucoup plus logique (mais il y a une fonction posix pour faire ça), le coup du fork qui reprend au même point, ça me semble vraiment gadget et inutile.

godrik
godrik
Niveau 30
24 janvier 2007 à 22:57:14

dnob700, ce n´est pas le fonctionnement de createprocess:
http://msdn2.microsoft.coom/en-us/library/ms682425.aspx

Dans l´api posix, je ne connais pas de fonction (mais il y en a peut etre une) qui duplique le processus et fait un appel de fonction..

Le fait de revenir au meme endroit permet de ne pas couper le flot d´execution. Du fait on se pose pas de question du genre
Dois-je vider la pile ? Cela serait problematique parcequ´il y a des informations stocké dans la pile qui sont peut etre référencé.
Ne pas vider la pile donc ? Qu´est ce que l´on en fait de cette pile alors, on pars du principe que la fonction passé en parametre est un main ? (j´entends par la que le processus est terminé lorsque cette fonction est terminé) Ce n´est pas évident.
Sachant que si c´est le comportement que l´on cherche a obtenir alors il suffit d´ecrire
if (fork () == 0)
dowhatiwant();

personnelement, ca m´a l´air intelligent fork...

dnob700
dnob700
Niveau 10
24 janvier 2007 à 23:10:59

oui, effectivement, je me suis mélangé les pinceau entre createprocess et createthread. c´est de createthread qu´il y a un équivalent posix (pthread est bien posix non ? ou alors ça manipule juste des thread posix sans être posix elle même ?) .

godrik
godrik
Niveau 30
24 janvier 2007 à 23:26:23

pthread comme posix thread :)
Il y a toujours eu beaucoup d´imagination dans ce style de comité! :)

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