首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在没有外部库的情况下从Clojure执行程序并实时显示其输出?

如何在没有外部库的情况下从Clojure执行程序并实时显示其输出?
EN

Stack Overflow用户
提问于 2017-08-26 12:41:29
回答 1查看 325关注 0票数 1

我的尝试:

代码语言:javascript
运行
复制
(import 'java.lang.Runtime)
(. (Runtime/getRuntime) exec (into-array ["youtube-dl" "--no-playlist" "some youtube video link"]))

我还试过sh。但这两种方法都没有达到我的要求--运行一个类似于shell的程序(sh等待直到程序退出,exec启动它,而不是等待它的退出;这两种方法都不会将任何东西输出到标准输出)。我希望实时显示进程输出,例如,当我运行youtube-dl时,我希望看到视频下载的进度。

如何在Clojure中完成这个简单的任务?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-26 13:21:03

您必须启动进程并侦听其输出流。一个解决办法是:

代码语言:javascript
运行
复制
(:require [clojure.java.shell :as sh]
          [clojure.java.io :as io])

(let [cmd ["yes" "1"]
      proc (.exec (Runtime/getRuntime) (into-array cmd))]
      (with-open [rdr (io/reader (.getInputStream proc))]
        (doseq [line (line-seq rdr)]
          (println line))))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45895485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档