Ocaml Graphics.open_graph在脚本模式下不起作用

时间:2012-07-08 06:20:22

标签: graphics ocaml x11

我正在尝试使用ocaml图形模块。 这一行:

#Graphics.open_graph "";;

在交互式模块中工作正常,即在X11中弹出一个带有白色背景的小窗口。 但是,当我尝试使用脚本模式时 - 将此行放在一个文件中然后编译它:

ocamlc -o a.out graphics.cma code.ml

只有X11启动但没有弹出窗口。 我用的是mac。谁知道为什么?谢谢。


跟进:

在脚本模式下,弹出窗口会在代码执行后立即显示特征。因为如果我使用XTerminal编译,我可以看到一个小窗口弹出,但然后关闭。

我设法通过在底部添加一个无限循环来保持窗口打开:

while true do () done;;

但仍然不明白事情是如何运作的。请帮忙。谢谢。

2 个答案:

答案 0 :(得分:3)

脚本终止时释放所有资源:内存,文件描述符,包括X窗口。

如果添加无限循环,则脚本不会终止,并且窗口保持打开状态。

同样,在顶层下方,只要你不关闭顶层,窗户就会保持打开状态。

我建议添加两行添加脚本的结尾:

  • print“按enter键退出”
  • 从键盘输入中读取一行

这样,在用户按Enter键之前,脚本不会终止。

答案 1 :(得分:1)

确实,正如jrouquie所说,你需要推迟终止你的计划。我个人这样做的方式是等待用户输入。在交互式程序(或正在研究的功能打开图形模式)结束时,我把:

ignore (Graphics.read_key ())

这将等到键盘上的某个键被击中,并在返回之前忽略键值。