clozure中的run-program常见的lisp不显示GUI窗口

时间:2011-04-19 13:40:51

标签: common-lisp subprocess

我在win7操作系统下使用ccl,我在ccl控制台中调用run-program函数,如下所示:

(ccl:run-program "notepad.exe" () :wait t)

之后,我可以在“任务管理器”的进程列表中找到“记事本”进程,并且ccl阻塞等待“记事本”进程退出。但是记事本的GUI窗口没有显示。似乎记事本只是在背景下运行。

我不确定我是否错过了“run-program”的任何参数,是否有人遇到同样的问题? 对此有何解决方案?

3 个答案:

答案 0 :(得分:0)

我在Windows Vista下遇到同样的问题。 我的临时解决方法是启动一个批处理文件,其中包含要启动的程序。

例如C:/tmp/notepad-starter.bat包含:

notepad.exe %1

..允许我输入

(ccl:run-program "C:/tmp/notepad-starter.bat" '("C:/tmp/notepad.pl") )

...工作正常并启动notepad.exe进程,包括GUI。 您甚至可以在启动之前从Lisp中动态创建批处理文件。

答案 1 :(得分:0)

我发现了更简单的方法: 创建一个名为eg的批处理文件。通用分批starter.bat 其中仅包含%1%2%3%4

然后,您可以将可执行文件作为参数列表的一部分进行调用:

(ccl:run-program“C:/tmp/generic-batch-starter.bat”'(“notepad.exe”“textfile.txt”))

答案 2 :(得分:0)

这在Windows 7上对我有用,可以使记事本窗口可见

(ccl:run-program "cmd.exe" '("/c" "notepad.exe") :wait nil)