Re: En C una llamada a read no bloqueante
On Fri, 2002-06-28 at 13:44, 31 wrote: > ¿Como puedo hacer en C que una llamada a read() no sea bloqueante? > En el man veo esto, pero no se donde o como lo tengo que definir. > > ERRORS >EINTR The call was interrupted by a signal before any > data was read. > >EAGAIN Non-blocking I/O has been selected using O_NONBLOCK > and no data was immediately available for reading. > > ¿Como puedo usar el O_NONBLOCK? ¿donde tengo que ponerlo? > tienes que usar el O_NONBLOCK al abrir el fichero. saludos -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: En C una llamada a read no bloqueante
On Fri, 28 Jun 2002 23:08:26 +0200 31 <[EMAIL PROTECTED]> wrote: > Christoph Simon escribiu: > > >On Fri, 28 Jun 2002 13:44:01 +0200 > >31 <[EMAIL PROTECTED]> wrote: > >>¿Como puedo usar el O_NONBLOCK? ¿donde tengo que ponerlo? > >man fcntl(2); por ejemplo: > > if (fcntl (fd, F_SETFL, O_NONBLOCK)) > > perror ("fcntl"); > >Si abriste el fichero con fopen(3), puedes usar fileno(3) para > >descubrir el descriptor fd. > Es para lectura de un pipe, y que no se quede bloqueada si no hay nada > que leer en el pipe. Funcionará de cualquier forma. Inténtalo. Hasta funciona con un socket. -- Christoph Simon [EMAIL PROTECTED] --- ^X^C q quit :q ^C end x exit ZZ ^D ? help . -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: En C una llamada a read no bloqueante
Christoph Simon escribiu: On Fri, 28 Jun 2002 13:44:01 +0200 31 <[EMAIL PROTECTED]> wrote: ¿Como puedo hacer en C que una llamada a read() no sea bloqueante? En el man veo esto, pero no se donde o como lo tengo que definir. ERRORS EINTR The call was interrupted by a signal before any data was read. EAGAIN Non-blocking I/O has been selected using O_NONBLOCK and no data was immediately available for reading. ¿Como puedo usar el O_NONBLOCK? ¿donde tengo que ponerlo? man fcntl(2); por ejemplo: if (fcntl (fd, F_SETFL, O_NONBLOCK)) perror ("fcntl"); Si abriste el fichero con fopen(3), puedes usar fileno(3) para descubrir el descriptor fd. Es para lectura de un pipe, y que no se quede bloqueada si no hay nada que leer en el pipe. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: En C una llamada a read no bloqueante
Me imagino que te refieres al hacer un read sobre un fifo, no? Corrigeme si me equivoco. Nunca he usado un read no bloqueante sobre una tuberia con nombre, pero puede que la opción O_NONBLOCK tengas que utilizarla a la hora de abrir la tuberia. "int open(char *fifo, int flag)" en el parámetro flag. Si de esta forma no te funciona, prueba a utilizar una cola de mensajes para sincronizar los procesos, porque éstas si que te permiten un read (en este caso, receive) no bloqueante usando el flag O_NONBLOCK a la hora de crear dicha cola. Mucha suerte, y si no tienes algo claro, pregunta. Salu2. > ¿Como puedo hacer en C que una llamada a read() no sea bloqueante? > En el man veo esto, pero no se donde o como lo tengo que definir. > > ERRORS >EINTR The call was interrupted by a signal before any > data was read. > >EAGAIN Non-blocking I/O has been selected using O_NONBLOCK > and no data was immediately available for reading. > > ¿Como puedo usar el O_NONBLOCK? ¿donde tengo que ponerlo? > > > -- > To UNSUBSCRIBE, email to [EMAIL PROTECTED] > with a subject of "unsubscribe". Trouble? Contact > [EMAIL PROTECTED] > > > Usuario Registrado de GNU/Linux #209025. "Siempre hay que tratar ser el mejor, pero nunca creerselo". (Juan Manuel Fangio) __E_v_e_r_y_d_a_y_._c_o_m___ Vive la emoción del Mundial en tu móvil y recibe en tiempo real los tantos de tus equipos favoritos. Ej.: Envía EVESP al 5075 y recibe todos los goles de la Selección Española. Visita everyday.com para ver todos los códigos y estar a la última.
Re: En C una llamada a read no bloqueante
On Fri, 28 Jun 2002 13:44:01 +0200 31 <[EMAIL PROTECTED]> wrote: > ¿Como puedo hacer en C que una llamada a read() no sea bloqueante? > En el man veo esto, pero no se donde o como lo tengo que definir. > > ERRORS >EINTR The call was interrupted by a signal before any > data was read. > >EAGAIN Non-blocking I/O has been selected using O_NONBLOCK > and no data was immediately available for reading. > > ¿Como puedo usar el O_NONBLOCK? ¿donde tengo que ponerlo? man fcntl(2); por ejemplo: if (fcntl (fd, F_SETFL, O_NONBLOCK)) perror ("fcntl"); Si abriste el fichero con fopen(3), puedes usar fileno(3) para descubrir el descriptor fd. -- Christoph Simon [EMAIL PROTECTED] --- ^X^C q quit :q ^C end x exit ZZ ^D ? help . -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
En C una llamada a read no bloqueante
¿Como puedo hacer en C que una llamada a read() no sea bloqueante? En el man veo esto, pero no se donde o como lo tengo que definir. ERRORS EINTR The call was interrupted by a signal before any data was read. EAGAIN Non-blocking I/O has been selected using O_NONBLOCK and no data was immediately available for reading. ¿Como puedo usar el O_NONBLOCK? ¿donde tengo que ponerlo? -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]