Sie können die Third-Party-Bibliothek Rashell verwenden, die Lwt verwendet, um einige High-Level-Primitive zu definieren, um Ausgaben von Prozessen zu lesen. Diese Primitiven, definiert in dem Modul Rashell_Command sind:
exec_utility
die Ausgabe eines Prozesses als Zeichenkette zu lesen;
exec_test
nur den Exit-Status eines Prozesses zu lesen;
exec_query
die Ausgabe einer Prozesslinie für Zeile als string Lwt_stream.t
exec_filter
zum Lesen ein externes Programm als string Lwt_stream.t -> string Lwt_stream.t
Transformation zu verwenden. beispielsweise so, val command : ?workdir:string -> ?env:string array -> string * (string array) -> t
(** [command (program, argv)] prepare a command description with the
given [program] and argument vector [argv]. *)
Rashell_Command.(exec_utility ~chomp:true (command("", [| "uname" |])))
ist ein string Lwt.t
, die:
Die command
Funktion Befehlskontexte verwendet wird, auf dem die vorherige Primitive angewandt werden, zu erstellen, ist es die Signatur gibt den "chomped" String (neue Zeile entfernt) des Befehls "uname" zurück. Als zweites Beispiel
Rashell_Command.(exec_query (command("", [| "find"; "/home/user"; "-type"; "f"; "-name"; "*.orig" |])))
ist ein string Lwt_stream.t
dessen Elemente die Pfade der Datei durch den Befehl gefunden
find /home/user -type f -name '*.orig'
Die Rashell Bibliothek auch auf einige häufig verwendete Befehle Schnittstellen definiert, und eine schöne Schnittstelle zu Der Befehl find
ist in Rashell_Posix
definiert - was übrigens die Portabilität von POSIX garantiert.
http://caml.inria.fr/pub/docs/manual-ocaml/libref/Unix.html#VALopen_process_in – newacct