代码之家  ›  专栏  ›  技术社区  ›  Kasper van den Berg

如何通过临时文件将数据传输到其他进程

  •  4
  • Kasper van den Berg  · 技术社区  · 6 年前

    我想从我的程序发送一些数据到通过 uiop:run-program .

    以下工作:

    (require :asdf)
    (asdf:load-system :uiop)
    (uiop:with-temporary-file (:stream dot-program-stream
                               :pathname dot-program-file)
      (format dot-program-stream "digraph g { n1 -> n2; }")
      (finish-output dot-program-stream)
      :close-stream
      (uiop:with-temporary-file (:pathname png-data)
        (uiop:run-program '("/usr/bin/dot" "-Tpng") :input dot-program-file
                                                    :output png-data)
        (uiop:launch-program '("/usr/bin/display") :input png-data)))
    

    这似乎相当复杂。

    一个更简单的版本,我只使用了一个流 finish-output 没有使用 :close-stream 标签导致 dot 生成一个空的0字节文件。

    如何执行一个进程并将我的lisp程序生成的数据作为标准输入传递给它?

    1 回复  |  直到 6 年前
        1
  •  5
  •   Svante    6 年前

    uiop:launch-program uiop:run-program :input :output

    launch-program :input :stream Launch-program process-info-input

    • run-program :output :string
    • :output :stream