Unix.open_process_in
функция. Он вызовет процесс и вернет входной канал, который позволит вам читать данные из процесса.
Если вы хотите ждать процесса прекратить, вы можете просто прочитать все данные (то есть, подождите, пока процесс труба не возвращает EOF), а затем закрыть канал, например,
(* [run cmd] runs a shell command, waits until it terminates, and
returns a list of strings that the process outputed *)
let run cmd =
let inp = Unix.open_process_in cmd in
let r = In_channel.input_lines inp in
In_channel.close inp; r
Рабочих с процессом без конца еще проще.
Вы также можете найти интересную библиотеку lwt, которая имеет очень спускный интерфейс для многопроцессорной обработки. Асинхронная библиотека - это еще одна асинхронная библиотека, обеспечивающая превосходный интерфейс для многопроцессорности. Хотя, эти библиотеки замечательные, они немного продвинуты, для простых случаев достаточно стандартного модуля Unix
.
Возможный дубликат [Сбор вывода внешней команды с помощью OCaml] (https://stackoverflow.com/questions/2214970/collecting-the-output-of-an-external-command-using-ocaml) – ymyzk