Сбор вывода внешней команды с помощью OCaml

Что правильный путь состоит в том, чтобы назвать внешней командой и собрать ее вывод в OCaml?

В Python я могу сделать что-то вроде этого:

os.popen('cmd').read()

Как я могу получить весь вывод внешней программы в OCaml? Или, лучше, OCaml с Lwt?

Спасибо.

11
задан ire_and_curses 6 February 2010 в 23:01
поделиться

3 ответа

Вам нужен Unix.open_process_in , который описан на странице 388 системного руководства OCaml, версия 3.10.

14
ответ дан 3 December 2019 в 03:04
поделиться

Для Lwt,

val pread:? Env: массив строк -> команда -> строка Lwt.t

кажется хорошим соперником. Документация здесь: http://ocsigen.org/docu/1.3.0/Lwt_process.html

7
ответ дан 3 December 2019 в 03:04
поделиться
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
4
ответ дан 3 December 2019 в 03:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: