E.9.3 进程内部结构

进程的字段(完整列表请参阅 process.h 文件中 struct Lisp_Process 的定义)包括:

name

Lisp 字符串,表示进程的名称。

command

包含用于启动该进程的命令参数的列表。对于网络或串行进程,若进程正在运行则为 nil,若进程已停止则为 t

filter

用于接收进程输出的 Lisp 函数。

sentinel

进程状态发生变化时会被调用的 Lisp 函数。

buffer

进程关联的缓冲区。

pid

整数类型,表示操作系统的进程 ID。 网络连接、串行连接等伪进程的该字段值为 0。

childp

标志位,若该进程为真实子进程则为 t。对于网络或串行连接,该字段是基于 make-network-processmake-serial-process 参数的属性列表。

mark

标记,指示进程最后一次输出插入到缓冲区中的末尾位置。该位置通常为缓冲区末尾,但并非绝对。

kill_without_query

若非零值,在该进程仍运行时退出 Emacs 不会请求确认终止进程。

raw_status

进程原始状态,由 wait 系统调用返回。

status

进程状态,与 process-status 函数的返回值一致。该值为 Lisp 符号、序对或列表。

tick
update_tick

若这两个字段不相等,则需要通过运行哨兵函数或在进程缓冲区中插入消息来通知进程的状态变化。

pty_flag

若非零值,表示与子进程通过伪终端(pty)通信;若为零值,则通过管道通信。

infd

用于接收进程输入的文件描述符。

outfd

用于向进程输出的文件描述符。

tty_name

子进程使用的终端名称, 若使用管道通信则为 nil

decode_coding_system

用于解码进程输入的编码系统。

decoding_buf

解码操作的工作缓冲区。

decoding_carryover

解码过程中的残留数据大小。

encode_coding_system

用于编码进程输出的编码系统。

encoding_buf

编码操作的工作缓冲区。

inherit_coding_system_flag

用于从进程输出的解码编码系统中设置进程缓冲区 coding-system 的标志位。

type

表示进程类型的符号:real(真实进程)、network(网络进程)、serial(串行进程)。