OS.Process.system的安全版本

时间:2016-02-10 18:30:11

标签: shell exec sml

标准ML提供功能

val system : string -> status
OS.Process中的

,它通过shell调用参数。

由于引用复杂性,安全性问题等原因,如果不需要其功能,通常会避免使用shell。因此大多数语言也提供直接执行功能。

我在标准ML中找不到类似的东西。我希望它有一个类似于

的类型
val system : string -> string list -> status

如何通过系统shell调用某些内容?

1 个答案:

答案 0 :(得分:3)

如果您的应用程序在某些Unix风格上运行,您可以使用由SML / NJ(至少)实现的可选Unix structure

val proc : (TextIO.instream, TextIO.outstream) Unix.proc =
  Unix.execute ("/bin/ls", ["-l"]);
val inStream = Unix.textInstreamOf proc;
val output = TextIO.inputAll inStream;
TextIO.closeIn inStream;
Unix.reap proc;
print output;