获取流程的输出

时间:2019-02-27 20:27:42

标签: elisp

我正在尝试创建一个函数,该函数将路径作为输入并将ls终端命令的输出作为字符串返回。我正在使用流程和哨兵,因为最终我将要创建其他函数,这些函数需要一些时间来执行,并且我希望它们异步运行。

(defun ls-to-string (path)
  (let (ls-proc
    ls-output)
    (progn (setq ls-proc (start-process "" "ls-buffer" "ls" path))
       (set-process-sentinel ls-proc (lambda (p e)
                       (if (string= e "finished\n")
                           (progn (set-buffer "ls-buffer")
                              (setq ls-output (buffer-string))
                              (kill-buffer "ls-buffer")
                              (message ls-output)))))   <---- (1)
        ls-output)))   <---- (2)

(ls-to-string "/home")

我(暂时)添加了(message ls-output)只是为了表明ls-output确实包含字符串(1)。但是返回值为nil(2)。

0 个答案:

没有答案