是否有一种直接的elisp方法来检查进程是否在emacs术语缓冲区中运行?

是否有一种直接的elisp方法来检查进程是否在emacs术语缓冲区中运行?,emacs,process,elisp,Emacs,Process,Elisp,我需要检查一个进程在我的emacs任期内是否仍在运行;通过(term)/bin/bsh“启动,然后重命名为,例如term-A 我试过(term-check proc“term-A”),但它没有显示我需要什么,或者至少,我不知道如何使用它 如果有多个emacs术语处于活动状态并运行同一个程序(在我的情况下,这是很有可能的),那么尝试通过对ps afx(或类似)的shell调用来追踪它是有问题的 我真的需要知道特定emacs术语缓冲区中的进程term-a是否正在运行 您可以使用get buffer

我需要检查一个进程在我的emacs任期内是否仍在运行;通过
(term)/bin/bsh“
启动,然后重命名为,例如
term-A

我试过
(term-check proc“term-A”)
,但它没有显示我需要什么,或者至少,我不知道如何使用它

如果有多个
emacs术语
处于活动状态并运行同一个程序(在我的情况下,这是很有可能的),那么尝试通过对
ps afx
(或类似)的shell调用来追踪它是有问题的


我真的需要知道特定emacs术语缓冲区中的进程
term-a
是否正在运行

您可以使用
get buffer process
获取缓冲区的进程:

(get-buffer-process "*shell*") -> #<process shell>
(get-buffer-process "*scratch*") -> nil
(获取缓冲区进程“*shell*”)->#
(获取缓冲区进程“*scratch*”->nil

*shell*
中退出shell之后,该缓冲区的
nil
也会被删除。

谢谢,但我的问题似乎模棱两可。。我需要知道我在学期内开始运行的流程是否仍在运行。。例如,
(get buffer process“term-A”)
似乎只告诉我终端实例本身。。我想知道我在命令行提示符下输入的命令是否正在运行(该命令是由
(set buffer“term-A”)(term send raw string“cmd-A”)
…启动的,我确实希望终端缓冲区的窗口保持打开状态。您可以使用
(进程id(get buffer process“term-A”))
获取shell的进程ID,然后使用
ps alx
并查看PPID列中是否有shell的子进程。这正是我要查找的,谢谢。使用PID很简单。(除非elisp可以进行子进程查找,而不是使用
ps
)。。。。