let run_and_read_in_buffer command insert on_end =
let com = Printf.sprintf "%s 2>&1" command in
let ic = Unix.open_process_in com in
let on_end () =
let ret =
match Unix.close_process_in ic with
Unix.WEXITED n
| Unix.WSIGNALED n
| Unix.WSTOPPED n -> n
in
on_end ret
in
ignore(watch_and_insert ~on_end ic insert)