在 windows 下调用 signal-process 函数并发送 SIGTERM 会发生什么?

因为手上没有可用的 windows 开发环境,所以不方便做这个测试。据我了解,windows and 下并不存在 SIGTERM 这个信号。那么当我调用 emacs 的 signal-process 函数并发送 SIGTERM 信号给一个子进程会发生什么?

  1. 等价于直接杀进程,相当于 delete-process
  2. 无视这个信号,无事发生

此外,具体的行为是否也可能会和构建环境有关?例如 MSYS2 构建版本可是否可能会提供对 unix 兼容层,而 native build 有没有可能会直接无视掉?

signal-process 其实是调用 signal-process-functions abnormal hook, 它的默认值是 internal-default-signal-process, 定义在 process.c 里面,这个函数会调用 kill. 在 windows 上,kill 就是 w32proc.c 里面定义的 sys_kill, 它会模拟一些信号,比如用 Ctrl-C 模拟 SIGINT ,用 TerminalProcess 模拟 SIGTERM.

4 个赞