Under 5.5.1, and after compiling with polyc, the code below gives an assertion violation and core dump:
> $ ./a.out
> In parent - reading
> Assertion failed: (save_vec_addr < save_vec+1000), function push, file save_vec.cpp, line 70.
> Abort trap: 6
(That's the OSX wording. I get something very similar under Linux.)
I may well be making a hash of my POSIX programming, but I'd still hope for an exception rather than a core dump.
Michael
- - - -
fun mkTIO_instream fd =
let
open Posix.IO
val (flags,_) = getfl fd
val rdr = mkTextReader { fd = fd, name = "",
initBlkMode = O.anySet (flags, O.nonblock) }
in
TextIO.mkInstream (TextIO.StreamIO.mkInstream (rdr, ""))
end
fun main() =
let
open Posix.Process Posix.IO
val {infd,outfd} = pipe()
in
case fork () of
NONE =>
let
val () = dup2{old = outfd, new = Posix.FileSys.stdout}
val () = List.app close [infd, outfd]
in
exec("/bin/ls", ["ls", "."])
end
| SOME pid =>
let
val _ = print "In parent - reading\n"
val strm = mkTIO_instream infd
fun recurse () =
case TextIO.inputLine strm of
NONE => ()
| SOME s => (print ("Child: " ^ s); recurse())
in
recurse();
wait();
print "Seen child's exit\n"
end
end
- - - -
________________________________
The information in this e-mail may be confidential and subject to legal professional privilege and/or copyright. National ICT Australia Limited accepts no liability for any damage caused by this email or its attachments.