[构想] 在 macOS 利用额外的 procfs 恢复 process-attributes 功能

aria2.el 无法使用 继续讨论:

我最近注意了一下,才发现 macOS 没有 procfs (恐怕你们早就知道了)(就是 /proc 目录)。我猜这就是为什么 process-attributes 函数以及一些相关功能在 Windows 上面都能用(因为 Cygwin 和 MinGW 都有 procfs),但是在 OS X 这个 unix 上面却不能用的原因。事实也证明的确如此:

https://email.esm.psu.edu/pipermail/macosx-emacs/2010-March/001873.html

不信,可以试试看 M-x proced 在各个操作系统上的表现。

然后,有人写了份 patch 给 Emacs 添加了在 OS X 下的 process-attributes,但是仍然缺少一些功能。(这个 patch 已经进入开发分支了)

现在已经有人搞出来个 procfs for macOS

不过编译需要用到 Xcode 的 macOS SDK,所以我没试过。 而且 Emacs 中这个函数是硬编码过的,在 OS X 平台用 #ifdef 定义为:

Lisp_Object
system_process_attributes (Lisp_Object pid)
{
  return Qnil;
}

所以装了 procfs 还要对 Emacs 源代码修改过才能正常用这些功能。

只是提供个思路,有心人可以去试一下。


OS X 没有 procfs 主要是因为 Mach 内核没有 proc 的进程概念,而是直接调度线程,用 task 来映射 proc。衍生阅读:Mach Scheduling and Thread Interfaces

1 个赞