我正在尝试创建一个函数,该函数将路径作为输入并将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)。