2

我要解决的具体问题是

  1. telnet向正在运行的会话发送命令
  2. 回显命令的结果message

但是一般的问题是向下级(comint)进程发送命令并等待输出返回并出现新的提示,然后返回输出。

我有:

(defun dired-vlc-test ()
  (interactive)
  (let* ((buf (process-buffer dired-vlc-telnet-proc))
         (old-max (with-current-buffer buf
                    (point-max))))
    (telnet-simple-send dired-vlc-telnet-proc "get_time")
    (accept-process-output dired-vlc-telnet-proc 5)
    (message (buffer-substring-no-properties old-max (with-current-buffer buf
                                                       (point-max))))))

然而,我总是得到的输出是“get_time”,即 Emacs 不等待新的输出。

我从这个问题accept-process-output中得到了想法

4

1 回答 1

3

accept-process-output在您的情况下返回太早,因为它在接受某些输出后立即返回,但在您的情况下,您希望继续接受输出,直到收到新的提示。请注意,远程进程不会告诉 Emacs“这是一个提示”,因此您必须调整您的进程过滤器以识别“哦,我们收到了一些看起来像提示的内容”,并且您必须accept-process-output循环调用,直到进程filter 告诉它(可能通过一些全局变量)它已经看到了提示。

于 2013-03-11T19:27:48.423 回答