[Haskell-cafe] named pipe interface
Donn Cave
donn at avvanta.com
Fri Jan 13 21:19:34 CET 2012
Quoth "Serge D. Mechveliani" <mechvel at botik.ru>,
...
> Initially, I did the example by the Foreign Function Interface for C.
> But then, I thought "But this is unnatural! Use plainly the standard
> Haskell IO, it has everything".
>
> So, your advice is "return to FFI" ?
Well, it turns out that the I/O system functions in System.Posix.IO
may work for your purposes. I was able to get your example to work
with these functions, which correspond to open(2), read(2), write(2).
I would also use these functions in C, as you did in your C program.
Haskell I/O functions like hGetLine are analogous to C library I/O
like fgets(3) - in particular, they're buffered, and I would guess
that's why they don't work for you here.
Specifically,
openFile "toA" WriteOnly Nothing defaultFileFlags
openFile "fromA" ReadOnly Nothing defaultFileFlags
fdWrite toA str
(str, len) <- fdRead fromA 64
return str
Donn
More information about the Haskell-Cafe
mailing list