我正在尝试使用ocaml图形模块。线路:
#Graphics.open_graph "";;
在交互模块中运行良好,即X11中弹出一个白色背景的小窗口。然而,当我尝试使用脚本模式时——将这一行放在文件中,然后编译它:
ocamlc -o a.out graphics.cma code.ml
只有X11启动,但没有弹出窗口。我在用mac。有人知道为什么吗?谢谢
跟进:
在脚本模式下,弹出窗口似乎会在代码执行后立即关闭。因为如果我使用XTerminal编译,我可以看到一个小窗口弹出,但随后关闭。
我设法通过在底部添加一个无限循环来保持窗口打开:
while true do () done;;
但仍然不明白事情是如何运作的。请帮忙。谢谢
当脚本终止时,所有资源都被释放:内存、文件描述符,包括X窗口。
如果添加一个无限循环,脚本不会终止,并且窗口保持打开状态。
同样,在顶层下,只要你不关闭顶层,窗户就会一直打开。
我建议在你的脚本末尾加上两行:
- 打印"按回车键退出"
- 从键盘输入中读取一行
这样,直到用户按下回车键,脚本才会终止。
事实上,正如jrouquie所解释的,您需要延迟程序的终止。我个人这样做的方式是等待用户输入。在交互式程序(或正在研究的打开图形模式的功能)的末尾,我输入:
ignore (Graphics.read_key ())
这将等待键盘上的某个键被按下,并在返回之前忽略该键值。