Получение результатов процесса - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь создать функцию, которая принимает в качестве входных данных путь и возвращает вывод команды терминала 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).Однако возвращаемое значение равно нулю (2).

...