|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Aug 2004
Città: Palermo
Messaggi: 1079
|
read, come renderla non bloccante?
Salve a tutti, come faccio a fare una read non bloccante da una pipe senza nome
int pipeS[2]; pipe(pipeS); read(pipeS[0], intero, sizeof(intero)); //come faccio a fare questa read non bloccante? Grazie a tutti, ciao ciao. |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Aug 2004
Città: Palermo
Messaggi: 1079
|
Posso usare la select su un solo file descriptor?
Come dovrei usarla? Se non ricordo male dovrei creare un readset, prima inizializzarlo a zero, poi inserire pipeS[0]. A questo punto: Select(pipeS[0]+1,readset, NULL, NULL); //fino a qui è giusto? poi if(FD_ISSET(pipeS[0], readset)//è giusto questo per verificare se è attivo? Se si faccio operazioni e mi pare di dover reinserire pipeS[0] nel readset, ricordo bene? Grazie, ciao ciao. |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Codice:
#include <sys/select.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
...
int r;
fd_set fds;
struct timeval tv;
/* Timeout=0 --> select non bloccante, ritorna immediatamente */
tv.tv_sec = 0;
tv.tv_usec = 0;
FD_ZERO (&fds);
FD_SET (tuo_descrittore, &fds);
r = select (tuo_descrittore+1, &fds, NULL, NULL, &tv);
if (r == 1)
{
/* Fai la read perche' ci sono dei dati */
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:09.



















