Что правильный путь состоит в том, чтобы назвать внешней командой и собрать ее вывод в OCaml?
В Python я могу сделать что-то вроде этого:
os.popen('cmd').read()
Как я могу получить весь вывод внешней программы в OCaml? Или, лучше, OCaml с Lwt?
Спасибо.
Вам нужен Unix.open_process_in , который описан на странице 388 системного руководства OCaml, версия 3.10.
Для Lwt,
val pread:? Env: массив строк -> команда -> строка Lwt.t
кажется хорошим соперником. Документация здесь: http://ocsigen.org/docu/1.3.0/Lwt_process.html
let process_output_to_list2 = fun command ->
let chan = Unix.open_process_in command in
let res = ref ([] : string list) in
let rec process_otl_aux () =
let e = input_line chan in
res := e::!res;
process_otl_aux() in
try process_otl_aux ()
with End_of_file ->
let stat = Unix.close_process_in chan in (List.rev !res,stat)
let cmd_to_list command =
let (l,_) = process_output_to_list2 command in l