caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* select (or polling) on in_channel?
@ 2005-03-31 23:28 Eijiro Sumii
  2005-04-01 10:59 ` [Caml-list] " Gerd Stolpmann
  2005-04-03 14:43 ` Christoph Bauer
  0 siblings, 2 replies; 14+ messages in thread
From: Eijiro Sumii @ 2005-03-31 23:28 UTC (permalink / raw)
  To: caml-list; +Cc: sumii

Hi again...

Is there any easy way to _correctly_ do a "select" (as in the UNIX
system call) on Pervasives.in_channel?  My naive approach

  Unix.select [Unix.descr_of_in_channel ic] [] [] 0.

seems to fail (and it indeed does fail) because of the buffering
inside Pervasives.in_channel, as long as I checked the source code of
ocaml-3.08.3.  Pervasives.in_channel_length doesn't help in my case
since the input channel is not a file.  Should I use only the
low-level functions in the Unix module if I _ever_ want "select"?

Thanks,

--
Eijiro Sumii (http://www.cis.upenn.edu/~sumii/)
Department of Computer and Information Science, University of Pennsylvania


^ permalink raw reply	[flat|nested] 14+ messages in thread
* Re: [Caml-list] select (or polling) on in_channel?
@ 2005-04-05  7:00 sejourne kevin
  2005-04-05 13:39 ` Eijiro Sumii
  0 siblings, 1 reply; 14+ messages in thread
From: sejourne kevin @ 2005-04-05  7:00 UTC (permalink / raw)
  To: caml-list; +Cc: sumii

 --- Eijiro Sumii <eijiro_sumii@anet.ne.jp> a écrit : 
> P.S.  I've also received an e-mail informing me that
> Cash
> 
>   http://pauillac.inria.fr/cash/latest/doc/Cash.html
> 
> has such a function.  It looks nice, but having it
> in pure/core OCaml
> would be even nicer.
> 
> From: "Eijiro Sumii" <eijiro_sumii@anet.ne.jp>
> > Thanks to everyone for ideas on how to "select"
> Pervasives.in_channel.
> > Since there seems to be no better solution than
> > 
> >   (1) hacking the low-level structure by using
> external C, or
> > 
> >   (2) reinventing the high-level library on top of
> Unix I/O,
> > 
> > I'm thinking of submitting a feature wish at
> > http://pauillac.inria.fr/bin/caml-bugs.  It should
> be easy enough for
> > the developers to implement, I hope...  (I could
> contribute my own
> > implementation if necessary, but I'm sure they
> will do better work.)
I'not sure of what you want, but does this do the job?
let système command f_line = 
  let cin = Unix.open_process_in command
  in 
    (try while true do
      f_line (input_line cin);
    done with | End_of_file -> ());
  Unix.close_process_in cin
;;
It is just a function that give to 'f_line' evry 
lines produced by a pipe by the 'command'.

I use it for Xdialog2Ocaml

Kevin.


	

	
		
__________________________________________________________________
Découvrez le nouveau Yahoo! Mail : 250 Mo d'espace de stockage pour vos mails ! 
Créez votre Yahoo! Mail sur http://fr.mail.yahoo.com/


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2005-04-05 18:12 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-03-31 23:28 select (or polling) on in_channel? Eijiro Sumii
2005-04-01 10:59 ` [Caml-list] " Gerd Stolpmann
2005-04-01 13:37   ` Eijiro Sumii
2005-04-03 14:43 ` Christoph Bauer
2005-04-04 20:24   ` Eijiro Sumii
2005-04-04 21:29     ` Eijiro Sumii
2005-04-05  5:49     ` Alex Baretta
2005-04-05 13:34       ` Eijiro Sumii
2005-04-05 14:14         ` Alex Baretta
2005-04-05 18:07           ` Eijiro Sumii
2005-04-05 14:30         ` Richard Jones
2005-04-05 18:12           ` Eijiro Sumii
2005-04-05  7:00 sejourne kevin
2005-04-05 13:39 ` Eijiro Sumii

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).