如何使用OCaml中的本地程序执行命令?

时间:2016-10-26 20:34:06

标签: command-line command ocaml

因此,在OCaml中执行命令的默认方式是Sys.command s,其中s是本例中的命令,但是当命令涉及本地程序时遇到了一个问题。例如,如果我有一个名为prog的可执行文件,我是从ocaml文件编译的,并且我使用Sys.command "prog {args}",则会收到错误'prog' is not recognized as an internal or external command, operable program or batch file.并使用命令./prog {args}似乎也没有改变任何东西,从那以后它说'.' is not recognized as an internal or external command, operable program or batch file.有什么建议吗?

2 个答案:

答案 0 :(得分:1)

问题可能在prog并且位于OCaml之外,换句话说,你的编程不是程序,因此操作系统无法运行它。

这是一个适合我的例子:

$ cat > test << EOF
#!/bin/sh
echo hello
EOF
$ chmod a+x test
$ ocaml
#  Sys.command "./test";;
hello
- : int = 0

答案 1 :(得分:1)

因此,上述用户之一是正确的:在Windows中,ocamlc生成的批处理文件无法执行。相反,一个简单的解决方法就是通过将.exe标记附加到您想要生成的文件名来进行编译。 ocamlc -o prog.exe myfile.ml。然后,只需使用Sys.command "prog.exe {args}"