antsite Je me souviens | Salut,
je comprends pas ce code compile mais bloque à l'éxécution, comme si un seul des 2 open était réalisé, l'autre bloquant...
Code :
- #include <iostream>
- #include <cstdlib>
- #include <unistd.h>
- #include <fcntl.h>
- #include <sys/stat.h>
- using namespace std;
- int main()
- {
- char buf[10];
- int pid, fd;
- unlink("toto" );
- umask(0);
- mkfifo("toto", 0777);
- pid = fork();
- switch(pid)
- {
- case -1: cout << "error" << endl; exit(1);
- case 0: //fils
- fd = open("toto", O_RDONLY);
- if(fd < 0)
- {
- cout << "erreur open fils" << endl;
- exit(2);
- }
- read(fd, buf, 5);
- cout << buf << endl;
- exit(0);
- default:
- fd = open("toto", O_WRONLY);
- if(fd<0)
- {
- cout << "erreur open pere" << endl;
- exit(2);
- }
- write(fd, "bonjour\n", 8);
- }
- }
|
merci |