OCamlでUnix.pipeへの書き込みができない
Unix.pipeを使って in_channel, out_channelを作りたいです。
let _ =
let read_desc, write_desc = Unix.pipe () in
let read_ch = Unix.in_channel_of_descr read_desc in
set_binary_mode_in read_ch false;
let write_ch = Unix.out_channel_of_descr read_desc in
set_binary_mode_out write_ch false;
output_string write_ch "hello"; flush write_ch;
(read_ch, write_ch)
上記ファイルをpipe.mlという名前で保存して次のようにコンパイルしたところ、実行時エラーとなってしまいます。どこが間違っているか分かりません。
$ ocamlc -g unix.cma pipe.ml
$ ./a.out
Fatal error: exception Sys_error("Bad file descriptor")
Raised by primitive operation at unknown location
Called from file "pipe.ml", line 8, characters 34-48
当方の環境は以下の通りです。
- Ubuntu 14.04 64bit
- ocaml 4.02.3