1

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

#Graphics.open_graph "";;

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

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

只有 X11 启动但没有弹出窗口。我正在使用Mac。有谁知道为什么?谢谢。


跟进:

似乎在脚本模式下,弹出窗口将在代码执行后立即关闭。因为如果我使用 XTerminal 进行编译,我可以看到一个小窗口弹出但随后关闭。

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

while true do () done;;

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

4

2 回答 2

3

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

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

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

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

  • print "按回车退出"
  • 从键盘输入中读取一行

这样脚本在用户按下回车之前不会终止。

于 2012-07-08T07:06:13.190 回答
1

事实上,正如 jrouquie 解释的那样,您需要延迟程序的终止。我个人这样做的方式是等待用户输入。在交互式程序(或正在研究的打开图形模式的功能)结束时,我输入:

ignore (Graphics.read_key ())

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

于 2012-07-08T07:17:06.897 回答