आप तृतीय पक्ष लाइब्रेरी Rashell का उपयोग कर सकते हैं जो प्रक्रियाओं से आउटपुट पढ़ने के लिए कुछ उच्च स्तरीय प्राइमेटिव को परिभाषित करने के लिए Lwt का उपयोग करता है। ये पुरातन, मॉड्यूल Rashell_Command में परिभाषित है, कर रहे हैं:
exec_utility
एक स्ट्रिंग के रूप में एक प्रक्रिया के उत्पादन में पढ़ने के लिए;
exec_test
केवल प्रक्रिया की निकास स्थिति को पढ़ने के लिए;
exec_query
एक string Lwt_stream.t
exec_filter
के रूप में लाइन द्वारा एक प्रक्रिया लाइन के उत्पादन में पढ़ने के लिए एक string Lwt_stream.t -> string Lwt_stream.t
परिवर्तन के रूप में एक बाहरी प्रोग्राम का उपयोग करने के लिए।
command
समारोह आदेश संदर्भों जिस पर पिछले पुरातन लागू किया जा सकता बनाने के लिए प्रयोग किया जाता है, यह हस्ताक्षर हैं:
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" |])))
एक string Lwt.t
है जो "uname" कमांड की "chomped" स्ट्रिंग (नई पंक्ति हटा दी गई) लौटाती है। एक दूसरे उदाहरण के रूप में
Rashell_Command.(exec_query (command("", [| "find"; "/home/user"; "-type"; "f"; "-name"; "*.orig" |])))
है एक string Lwt_stream.t
जिसका तत्वों आदेश
find /home/user -type f -name '*.orig'
Rashell पुस्तकालय भी परिभाषित करता है कुछ आमतौर पर इस्तेमाल किया आदेशों का इंटरफेस द्वारा पाया फ़ाइल का पथ, और के लिए एक अच्छा इंटरफ़ेस हैं find
कमांड Rashell_Posix
में परिभाषित किया गया है - जिस तरह से POSIX पोर्टेबिलिटी की गारंटी देता है।
स्रोत
2016-01-31 17:37:59
http://caml.inria.fr/pub/docs/manual-ocaml/libref/Unix.html#VALopen_process_in – newacct