1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int f;
//fonction de lecture du fils à partir du fichier
void lec()
{char c;
lseek(f,-1,SEEK_CUR);
read (f,&c,1);
printf ("%c\n",c);
}
void ecr() {}
main()
{int i,pid; char c='a';
f=open ("./fic.dat",O_RDWR|O_CREAT,S_IRWXU);
pid=fork();
if (pid==0)
{pid=getppid();
signal(SIGUSR1,lec);
for (i=0;i<10;i++)
{pause ();
sleep(1);
kill (pid,SIGUSR1);
}
}
else
{signal(SIGUSR1,ecr);
for(i=0;i<10;i++)
{write (f,&c,1);
c=c + (i % 5);
sleep(1);
kill (pid,SIGUSR1);
pause();
}
wait(); // le pére atant la términésant du fils
close(f);
}
} |
Partager