Re: En C una llamada a read no bloqueante

2002-07-01 Por tema Rodrigo Moya
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

2002-06-28 Por tema Christoph Simon
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

2002-06-28 Por tema 31

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

2002-06-28 Por tema Javier Milán
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

2002-06-28 Por tema Christoph Simon
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

2002-06-28 Por tema 31

¿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]