1
我尝试:如何在没有任何外部库的情况下从Clojure执行程序并实时显示其输出?
(import 'java.lang.Runtime)
(. (Runtime/getRuntime) exec (into-array ["youtube-dl" "--no-playlist" "some youtube video link"]))
我也试过sh
。但是这两种方法都没有做到我想要的 - 像shell一样运行一个程序(sh
等到程序退出,exec
启动它并且不等待它退出;两者都不会输出任何内容到标准输出)。我想要显示过程输出,例如当我运行youtube-dl
我想查看视频下载的进度。
如何在Clojure中完成这个简单的任务?
它与shell不完全相同(例如,shell允许“重写”当前行,例如进度条总是只显示一次),但它足够接近。谢谢 :)。 – monnef
在我的示例中,我只使用println函数。对于重写行为,您必须实现自己的打印回车的println函数。请参阅:https://stackoverflow.com/questions/9566654/print-a-carriage-return-in-java-on-windows-on-console –