我正在尝试使用ocaml图形模块。 这一行:
#Graphics.open_graph "";;
在交互式模块中工作正常,即在X11中弹出一个带有白色背景的小窗口。 但是,当我尝试使用脚本模式时 - 将此行放在一个文件中然后编译它:
ocamlc -o a.out graphics.cma code.ml
只有X11启动但没有弹出窗口。 我用的是mac。谁知道为什么?谢谢。
跟进:
在脚本模式下,弹出窗口会在代码执行后立即显示特征。因为如果我使用XTerminal编译,我可以看到一个小窗口弹出,但然后关闭。
我设法通过在底部添加一个无限循环来保持窗口打开:
while true do () done;;
但仍然不明白事情是如何运作的。请帮忙。谢谢。
答案 0 :(得分:3)
脚本终止时释放所有资源:内存,文件描述符,包括X窗口。
如果添加无限循环,则脚本不会终止,并且窗口保持打开状态。
同样,在顶层下方,只要你不关闭顶层,窗户就会保持打开状态。
我建议添加两行添加脚本的结尾:
这样,在用户按Enter键之前,脚本不会终止。
答案 1 :(得分:1)
确实,正如jrouquie所说,你需要推迟终止你的计划。我个人这样做的方式是等待用户输入。在交互式程序(或正在研究的功能打开图形模式)结束时,我把:
ignore (Graphics.read_key ())
这将等到键盘上的某个键被击中,并在返回之前忽略键值。