为什么我的clojure shell结果不像python中的结果?

2024-04-27 02:41:20 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中工作时,repl我经常需要编辑多行代码。在

所以我用import os然后os.system("notepad npad.py")

在clojure我首先运行(use '[clojure.java.shell :only [sh]])

然后我运行(sh "notepad" "jpad.clj")

{cdjure>这个记事本挂起来不有用。换句话说,在我关闭记事本之前,我无法在repl中输入代码,并且我希望两者都保持打开状态。在

我知道不用clojure就可以轻松打开记事本,所以没什么大不了的。但是,clojure有没有办法在不挂起的情况下启动外部进程?在


Tags: 代码pyimport编辑osuseshjava
2条回答

future是一种让工作在后台运行的方便方法,并且很容易在以后检查进程。在

user> (def notepad-process (future (sh "emacs" "jpad.clj")))
#'user/notepad-process

编辑文件一段时间,然后检查进程,如果您希望它的退出代码:

^{pr2}$

听起来您希望sh立即返回,而不是等待记事本的退出代码。写一个sh!宏或者类似的东西,在一个新线程上运行原始的sh命令怎么样?如果您只是在REPL中使用它作为一种方便,那么它将完全没有问题。在

编辑

亚瑟的答案是更好的,更具克洛朱里安式的。在

相关问题 更多 >