Je suis en train d'envoyer et de recevoir l'aide de tuyaux:problème avec O_NONBLOCK pipe
send.cpp
struct
{
long a;
long b;
}T;
cout << "1" << endl;
if (access (FIFO_NAME, F_OK) == -1) {
res = mkfifo (FIFO_NAME, 0755);
if (res != 0)
cout << " Can't make fifo" << endl;
}
cout << "2" << endl;
pipe_fd = open (FIFO_NAME, O_WRONLY);
cout << "3: " << pipe_fd << endl;
a=b=1;
res = write (pipe_fd, &T, sizeof (T));
cout << "4" << endl;
close(pipe_fd);
recv.cpp
cout << "1" << endl;
pipe_fd = open(FIFO_NAME, O_RDONLY | O_NONBLOCK);
cout << "2" << endl;
res = read(pipe_fd, &T, sizeof(T));
cout << T.a << T.b << endl;
close(pipe_fd);
./send ./recv
ouvert est correct, mais quand send.cpp exécute "write" le programme se termine et "4" n'est pas affiché !!!! Je recv side le T.a et T.b ne sont pas corrects!
Qu'est-ce qui ne va pas avec mes programmes ?! (Je dois dire que les programmes fonctionnent correctement lorsque je retire O_NONBLOCK falg)
grâce