0% ont trouvé ce document utile (0 vote)
28 vues4 pages

Utilisation des tubes en programmation C

Transféré par

kosisenam
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
28 vues4 pages

Utilisation des tubes en programmation C

Transféré par

kosisenam
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

!

" #$
% #
&'
( #
) !
* + & , (

Généralités
+ .$./ & (

Création d’un tube ordinaire


#include <unistd.h>

int pipe (int p[2])

- 0

− p[0] 0 +
− p[1] 0 +

* 1 + 2' #

Généralités sur les tubes ordinaires


+ 3
+ + 3
+ 0 4
SIGPIPE 3
+ 2 ! 3
+ , & + (3
+ 5 #

Utilisations des tubes ordinaires


) ! % + 5
0

'# & ( + (pipe) 3


-# $ (fork) 67 ! !
3
8# ) , + % (write) 3
9# ) + % (read) 3
:# * + % (close) 0
close(p[0]) + 3
close(p[1]) + #

-
) !
* + & , (

Exemple d’utilisation des tubes ordinaires


#include <stdio.h>

#include <unistd.h>

#define MAX 10

main()

int p[2];

char data[MAX];

if (pipe(p)==-1)

perror( pipe );

exit(1);

if (fork()>0) /* père */

close(p[0]);

nb_lu=read(0,data,Max);

write(p[1],data,nb_lu);

close(p[1]);

wait();

else /* fils */

close(p[1]);

nb_lu=read(p[0],data,Max);

write(1,data,nb_lu);

close(p[0]);

exit(0);

8
) !
* + & , (

Duplications de descripteurs de fichiers


#include <unistd.h>

int dup2(int newfd, int oldfd)

oldfd & ( newfd# * %


! +
! #

Exercices

% 0

ps -aux | wc -l

% 0

ps -aux | grep root | wc -l

Vous aimerez peut-être aussi