0

我已经在 eshell 中启动了一个 python 进程:

python app.py

我想用 elisp 函数重新启动它,我认为comint-quit-subjob执行时会C-c C-\杀死进程,但我所有的执行尝试comint-quit-subjob都失败了

这是我到目前为止所拥有的:

(defun restart-app()
  (with-current-buffer "*eshell*"
    (interactive)
    (comint-quit-subjob)
    (eshell-return-to-prompt)
    (insert "python app.py")
    (eshell-send-input))
)

希望它给出了我正在尝试的内容,但它失败了。有任何想法吗?

4

1 回答 1

0

我建议寻找一种类似 eshell 的方式来杀死进程(我自己不是 eshell 用户)。Comint 尝试在缓冲区中搜索某些内容。您可以解决这样的问题(但它很脆弱且不优雅):

(defun restart-app()
  (with-current-buffer "*eshell*"
    (interactive)
    (kill-process nil comint-ptyp)
    (run-with-timer 0.5 nil
                    (lambda ()
                      (with-current-buffer "*eshell*"
                        (goto-char (point-max))
                        (insert "python app.py")
                        (eshell-send-input)))))
于 2015-03-06T16:45:44.840 回答