Jam Kuradoberi Guilty Gear X , uniquement ! | bon voila un ptit exemple avec "dup", on va faire un pere qui lance un programme test, on dirait que le programme test va lire sur l'entree standard et afficher ce qu'il a lu mais en faisant un TOUPPER. Le pere avant de lancer test va rediriger l'entree standard du fils vers un pipe et la sortie standard vers un autre pipe, et notre pere va donc ecrire dans ce pipe pour parler a son fils, son fils va repondre et le pere va donc recevoir ce qu'il a envoyé mais en majuscules, et il l'affichera :
Code :
- void main(){
- int pere_fils[2], fils_pere[2];
- pid_t fils;
- //ici on fait les pipes
- pipe(pere_fils);
- pipe(fils_pere);
- if( (fils = fork()) == 0){ //travail du fils
- //pour les pipes on ecrit dans le 1 et on lit dans le 0
- //ici on ferme un des 2 sens pour chaque pipe, ceux dont on ne se sert pas
- close(pere_fils[1]);
- close(fils_pere[0]);
- //on commence les dup
- close(0);
- dup(pere_fils[0]);
- close(pere_fils[0]);
- close(1);
- dup(fils_pere[1]);
- close(fils_pere[1]);
- //on lance test
- execlp("test","test",NULL);
- }
- else{ //travail du pere
- char c = 'a';
- char buf;
- while(c != '0'){
- cin >> c;
- write(pere_fils[1],c,1);
- read(fils_pere[0],buf,1);
- cout<<buf<<endl;
- }
- }
- }
|
voila j'espere que c'est assez clair, et surtout que ca marche ;-) |