N-PN White-Hat Project
[C] Programmation systeme: execve(), fork() et pipe() - Version imprimable

+- N-PN White-Hat Project (https://n-pn.fr/forum)
+-- Forum : Tutoriels (https://n-pn.fr/forum/forumdisplay.php?fid=15)
+--- Forum : [Tutoriel] Programmation (https://n-pn.fr/forum/forumdisplay.php?fid=44)
+--- Sujet : [C] Programmation systeme: execve(), fork() et pipe() (/showthread.php?tid=2318)



[C] Programmation systeme: execve(), fork() et pipe() - ark - 21-10-2012




RE: [C] Programmation systeme: execve(), fork() et pipe() - aulos7 - 21-10-2012

C'est très intéressant ( même si je n'ai pas encore tout saisi).


RE: [C] Programmation systeme: execve(), fork() et pipe() - sakiir - 21-10-2012

De même pour moi ! je pense que tu as très bien expliqué , tout comme le type qui a écris le bouquin que j'ai .. mais j'ai du mal avec ça ..


RE: [C] Programmation systeme: execve(), fork() et pipe() - ark - 21-10-2012

Merci pour vos commentaires, hésitez pas a poser des questions hein ;) Et allez y a petites doses.
Je repasserais dessus demain pour ajouter des informations supplémentaires que j'ai quelque peu oublié... :p Mais rien de grave rassurez vous :p J'en avais juste un peu marre a la fin, j'ai abrégé. ^^'


RE: [C] Programmation systeme: execve(), fork() et pipe() - aulos7 - 22-10-2012

Ben c'est pas de ta faute si je n'ai pas encore tout compris : il faudrait que je me remette à un langage de plus bas niveau pour tout saisir et faire des tests.


RE: [C] Programmation systeme: execve(), fork() et pipe() - sakiir - 23-10-2012

ouai aulos ! en te remttant a quelque choose de plus bas niveau .. tu finis par comprendre des choses plus facilement Smile


RE: [C] Programmation systeme: execve(), fork() et pipe() - ark - 26-10-2012

Plop, j'ai rajouter la partie concernant les fonctions dup() et dup2(). btw, j'ai appris au passage l'existence d'une fonction dup3(), peut être que je la rajouterais :p


RE: [C] Programmation systeme: execve(), fork() et pipe() - spin - 28-10-2012

Dans la section 0x01 :
Citation :Dans le cas contraire, si l’exécution du binaire passé en paramètre s'effectue correctement, execve() ne retournera absolument rien puisqu'il "passe au programme appelé".
Citation :Ça peut paraître étrange, mais c'est très logique. Pour exécuter un binaire, le processeur garde un pointeur vers l'instruction en cours d’exécution, et est déplacé automatiquement vers la prochaine instruction. L'appel a execve() va permettre de déplacer se pointeur en allant a l'adresse de début du binaire a exécuter. Le binaire est ensuite exécuter. mais lorsqu'on arrive a la fin, le programme se ferme car le pointeur sur l'instruction en cours ne peut pas revenir tout seul a la position avant l’exécution.

Je ne comprends pas bien, ici. Qu'advient-il exactement du programme qui a passé sa main ? Il reste en suspens jusqu'à ce que le programme lancé avec execve() se termine et continue ensuite, ou bien il continue son exécution en parallèle (dans le cas où -1 n'est pas retourné) ? Je précise que je ne connais pas la fonction execve(), je ne l'ai jamais utilisé.

Pour le reste, je suis.

Bonne continuation, c'est un bon tuto qui mérite sa place Wink


RE: [C] Programmation systeme: execve(), fork() et pipe() - ark - 28-10-2012

Hum.. Okay, je vois ce qui te dérange Smile
En fait, tu reste toujours dans le même processus. Tu vas juste passer sur un autre bout de code exécutable. Du coup, quand le programme appelé se termine, le processus se termine aussi. Le programme ayant appelé le second ne continue pas, il s’arrête au niveau de l'appel a execve(). Et du coup, quand le processus se termine, les 2 programmes sont finis.
Ensuite, si execve() renvoi -1, c'est que l'on est pas passe au programme suivant. Le programme appelant continue donc.