进_读
公开化「整数」而化「整数」而化「整数」而「整数」
文言:原生(Linux 与苹果)后端之进程、候与网络:运行程序以 fork(Linux 以 clone)与 execve,退码以 wait4(苹果以 waitpid),候以 ppoll(苹果以 poll)。TCP 可用四版、六版之数字地址与系统名表;二系统循解析配置诸服以 UDP 问 DNS 之 A、AAAA,原名不获则循搜索域补之。苹果之解析配置未必尽载系统诸 DNS 路由,待续。系统之差聚于“进_”诸函数。汉语:原生(Linux 与 macOS)后端的进程包、等待与网络包,两个系统共用一份逻辑,差别集中在“进_”开头的小函数里。运行程序:fork(Linux 用 clone(SIGCHLD))后子进程接好标准流与工作目录再 execve,失败时经 O_CLOEXEC 管道把 errno 告诉父进程。取退出码用 wait4(WNOHANG)(macOS 用 waitpid);等待用 ppoll(macOS 用 poll)。TCP 支持 IPv4、数字 IPv6、/etc/hosts 名表;两平台按 resolv.conf 顺序尝试多台服务器,以 UDP 查询 A、AAAA,原名未解析时依次尝试 search 或 domain 后缀。Linux 空主机监听双栈,macOS 空主机仍用 IPv4。macOS 的 resolv.conf 未必涵盖系统全部 DNS 路由;IPv4 嵌入式 IPv6 与区域号待办。启动时忽略 SIGPIPE,子进程在 execve 前恢复默认。
文言:系统之差:以平台号择 Linux 或苹果之调用。汉语:按平台号在 Linux 系统调用与 macOS libSystem 之间选择的小包装。
进_写
公开化「整数」而化「整数」而化「整数」而「整数」
暂无说明。
进_开配置
公开化「整数」而「整数」
文言:系统之名表与解析配置,皆以只读而开。汉语:按平台以只读方式打开 /etc/hosts 等系统配置文件。
进_关
公开化「整数」而「整数」
暂无说明。
进_退出
公开化「整数」而「有」
暂无说明。
进_误码
公开化「整数」而「整数」
暂无说明。
进_果码
公开化「整数」而「整数」
暂无说明。
进_等子
公开化「整数」而化「整数」而化「整数」而「整数」
暂无说明。
进_杀
公开化「整数」而化「整数」而「整数」
暂无说明。
进_控设备
公开化「整数」而化「整数」而化「整数」而「整数」
暂无说明。
进_复制到
公开化「整数」而化「整数」而「整数」
暂无说明。
进_改目录柄
公开化「整数」而「整数」
暂无说明。
进_执行
公开化「整数」而化「整数」而化「整数」而「整数」
暂无说明。
进_分叉
公开化「有」而「整数」
暂无说明。
进_建闭管
公开化「整数」而「整数」
文言:执行前之关闭标:苹果之 pipe 无 O_CLOEXEC,以 fcntl 之 F_SETFD 补之。汉语:建一对 O_CLOEXEC 管道:Linux 用 pipe2;macOS 的 pipe 不带此标志,再用 fcntl(F_SETFD, FD_CLOEXEC) 给两端补上。
进_单调纳秒
公开化「整数」而「整数」
暂无说明。
进_轮询
公开化「整数」而化「整数」而化「整数」而「整数」
文言:poll:Linux 以 ppoll 受 timespec;苹果以 poll 受毫秒(至多二十亿)。汉语:poll:Linux 用 ppoll 直接取 timespec;macOS 用 poll,时限换成毫秒(秒数超过两百万按两百万算)。
林底_参表
公开化「有」而「整数」
文言:暂存之区:参数之指针表、环境之指针表、poll 之组。汉语:暂存区里的 execve 参数指针表(69632 起,至多 4095 项)、环境指针表(102400 起,至多 8191 项)与 poll 数组(66560 起,至多 256 项)。
林底_境表
公开化「有」而「整数」
暂无说明。
林底_候组
公开化「有」而「整数」
暂无说明。
林候组容
公开「整数」
暂无说明。
林写绝对指针
公开化「整数」而化「整数」而「有」
文言:绝对指针:线性之址加基址,书为八字节。汉语:把线性地址换成绝对指针(加上线性内存基址,64 位)写进槽。
林进程找零
公开化「整数」而化「整数」而「整数」
文言:自址寻零,至止而休。汉语:在 [址, 止) 里找零字节,返回其地址;找不到返回 止。
林填指针们
公开化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」
文言:以零终之诸串,造其指针之表,以空指针终之;返串之数。汉语:把 [址, 止) 里依次相连的零结尾串做成绝对指针表(每项 8 字节,末尾一个空指针),至多 上限 项;返回项数。
林找空格
公开化「整数」而「整数」
文言:寻空格。汉语:从第 序 格起找空的进程表格,返回格号;没有返回 -1。
林管道信号
公开化「整数」而「整数」
文言:置 SIGPIPE 之处:一为忽之,零为默认。汉语:设置 SIGPIPE(13)的处理:1 忽略(SIG_IGN),0 默认(SIG_DFL)。Linux 用 rt_sigaction(sigaction 结构在 ARM64 与 x86-64 上都是处理函数在首 8 字节、其余置零即可);macOS 用 signal。
林子接流
公开化「整数」而化「整数」而「整数」
文言:子之标准流:柄为负或同其号则承之,否则 dup3 之。汉语:子进程接标准流:句柄为负(继承)或已经是目标号时不动,否则 dup3 到目标号。
林子进程
公开化「整数」而化「整数」而化「整数」而化「整数」而「整数」
文言:子进程:接流、易目录、execve;败则书误码于管道而以一二七退。汉语:clone 之后的子进程:关掉误码管道的读端,接好三个标准流,按需 fchdir,恢复 SIGPIPE 默认处理,execve;execve 失败就把 errno 写进误码管道并以 127 退出。
林读至
公开化「整数」而化「整数」而化「整数」而化「整数」而「整数」
文言:读至满或文末。汉语:从句柄读到 长 字节或文件尾,返回读到的字节数。
林执行误码
公开化「整数」而「整数」
文言:execve 之误码:不存为四十四,不可执行为二。汉语:execve 的 errno 换成状态码:ENOENT(2)为 44,EACCES(13)与 ENOEXEC(8)为 2,其余照常转换。
林父进程
公开化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」
文言:父进程于 clone 之后:读误码之管道,无字者成,记于进程表。汉语:clone 之后的父进程:关掉误码管道的写端并读它;读到 4 字节说明 execve 失败(回收子进程并返回对应状态码),读到 0 字节说明已成功启动:登记进程表并把句柄写到出址。
原底_运行程序
公开化「整数」而化「整数」而「整数」
文言:运行程序:依块造路径、参数表、环境表(环境块长为零则承本进程之环境),开误码之管道,clone 之。汉语:运行程序:按块取路径(补结尾零)、参数块与环境块(长为 0 时用本进程启动时读到的环境块)做成绝对指针表,建 O_CLOEXEC 误码管道,clone;子进程走 林子进程,父进程走 林父进程。进程表满返回 33。
林查进程
公开化「整数」而「爻」
文言:察进程:已退则记其退码。汉语:检查进程表格:已退出返回阳;运行中则 wait4(WNOHANG) 一次,退出了就记下退出码(正常退出取 (状态>>8)&255,被信号终止为 128+信号号);wait4 出错(如已被回收)按退出码 255 处理,免得等待永不返回。
原底_取进程退出码
公开化「整数」而化「整数」而「整数」
暂无说明。
原底_终止进程
公开化「整数」而「整数」
暂无说明。
林入组
公开化「整数」而「爻」
文言:候:订之类,一钟、二可读、三可写。汉语:等待。订阅 16 字节:[类别 4][句柄 4][超时纳秒 8];事件 16 字节:[订阅序号 4][状态码 4][类别 4][可用字节数 4]。
文言:此订之柄,是否入 poll 之组。汉语:该订阅是否放进 poll 数组:可读或可写、且句柄不是进程句柄。
林填候组
公开化「整数」而化「整数」而化「整数」而化「整数」而「整数」
文言:填 poll 之组,返其数。汉语:按订阅顺序填 poll 数组(fd、events:可读 POLLIN 1,可写 POLLOUT 4),返回项数。
林已历
公开化「有」而「有」
文言:已历之纳秒:今减始,书于杂之二十四。汉语:读单调时钟,算出自开始等待以来的纳秒数(64 位),写到 杂+240。
林钟至
公开化「整数」而「爻」
文言:钟之订已至否。汉语:时钟订阅是否已到时(已历纳秒 ≥ 订阅的超时)。
林书事
公开化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」
文言:书一事。汉语:写一个事件,返回新的事件个数。
林可读数
公开化「整数」而「整数」
文言:可读之字节数:FIONREAD 取之,败则零。汉语:可读字节数:ioctl FIONREAD(Linux 0x541B,macOS 0x4004667F)取,失败为 0。
林集事
公开化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」
文言:集诸事:钟至者、进程已退者、poll 所报者。汉语:收集事件(按订阅顺序):时钟已到时的;进程句柄已退出的(报为可读或可写,可用 0);poll 数组里 revents 非零的(POLLNVAL 0x20 报 8,POLLERR 8 报 29,否则 0;可读时附可用字节数)。组序 是该订阅在 poll 数组里的下标。
林有进程订
公开化「整数」而化「整数」而化「整数」而「爻」
文言:有行中之进程订否。汉语:是否有进程订阅(此时 poll 每轮至多等 10 毫秒)。
林取最近
公开化「整数」而化「整数」而化「整数」而「有」
文言:最近之钟:诸钟订之余时取其小者,书于杂之三十二;无钟则为一时(三千六百秒)。汉语:算本轮 poll 的时限(纳秒,64 位,写到 杂+32 起的 8 字节):各时钟订阅剩余时间的最小值;没有时钟订阅时取 3600 秒;有进程订阅时再截到 10 毫秒。杂+240 是已历纳秒,+248 是暂存,+256 是比较或除法用的常量,+264、+272 是商与余,+288 起 32 字节是 sigaction 结构。
林候轮
公开化「整数」而化「整数」而化「整数」而化「整数」而「整数」
文言:一轮:先集已至之事;无事则 ppoll 至最近之时,再集。汉语:一轮等待:先 ppoll 零时限查一遍并收集事件;没有事件就按最近时限 ppoll 阻塞,再收集;仍没有就再来一轮。
原底_等待
公开化「整数」而化「整数」而化「整数」而化「整数」而「整数」
暂无说明。
林点分
公开化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」
文言:四版之址:点分十进、localhost 与空者;返网络序之四字节,不识则负一。汉语:IPv4 地址解析:空串为任意地址,“localhost”为 127.0.0.1,其余按点分十进制解析;返回按网络字节序排列的 4 字节,不认识返回 -1。
林字节等
公开化「整数」而化「整数」而化「整数」而「爻」
暂无说明。
林等串
公开化「整数」而化「整数」而化「整数」而「爻」
暂无说明。
林六字
公开化「整数」而「整数」
文言:十六进数字化其值;非数字返负一。汉语:把十六进制字符转成 0 至 15,非法字符返回 -1。
林六清
公开化「整数」而化「整数」而「有」
暂无说明。
林六存
公开化「整数」而化「整数」而化「整数」而「有」
暂无说明。
林六移
公开化「整数」而化「整数」而化「整数」而化「整数」而「有」
文言:双冒号之尾组自后向前移,以留零隙。汉语:从后往前移动 `::` 后面的组,给被压缩的零组留出位置。
林六清隙
公开化「整数」而化「整数」而化「整数」而「有」
暂无说明。
林六毕
公开化「整数」而化「整数」而化「整数」而「整数」
暂无说明。
林六读
公开化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」
文言:逐字解十六字节之六版地址;双冒号唯可一见。汉语:逐字解析 IPv6 十六字节地址,`::` 至多出现一次;暂不解析末尾嵌入的 IPv4 或接口区域号。
林含冒
公开化「整数」而化「整数」而化「整数」而「爻」
暂无说明。
林解析主机
公开化「整数」而化「整数」而「整数」
暂无说明。
林解析数字
公开化「整数」而化「整数」而「整数」
文言:地址置于候杂九十六起,返族二或十;苹果仍以空主机作四版任意址。汉语:把解析后的地址放在候杂+96,返回 Linux 地址族 2 或 10;macOS 的空主机仍使用 IPv4 任意地址。
林域小写
公开化「整数」而「整数」
暂无说明。
林域等
公开化「整数」而化「整数」而化「整数」而「爻」
暂无说明。
林配置空
公开化「整数」而「爻」
暂无说明。
林配置跳空
公开化「整数」而化「整数」而化「整数」而「整数」
暂无说明。
林配置词尾
公开化「整数」而化「整数」而化「整数」而「整数」
暂无说明。
林配置行尾
公开化「整数」而化「整数」而化「整数」而「整数」
暂无说明。
林名表别名
公开化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」
文言:一行诸别名皆验,得则解其首字段之数字址。汉语:检查 /etc/hosts 一行的所有别名,匹配时解析行首数字地址。
林名表诸行
公开化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」
暂无说明。
林名表查
公开化「整数」而化「整数」而「整数」
文言:读系统名表,取其首四万九千一百五十二字节;逾此暂待。汉语:读取 /etc/hosts 的前 48 KiB 并查找主机名;更长文件的后续部分待办。
林名服诸行
公开化「整数」而化「整数」而化「整数」而「整数」
文言:于解析配置中择首个可识之 nameserver,数字址留候杂九十六起。汉语:从 /etc/resolv.conf 选第一个可解析的 nameserver,数字地址写入候杂+96。
林名服查
公开化「有」而「整数」
暂无说明。
林填地址
公开化「整数」而化「整数」而「整数」
文言:造 sockaddr_in 于杂之六十四;苹果之首字节为长十六,次为族。汉语:在 杂+64 造 16 字节 sockaddr_in:族 2(AF_INET,macOS 的首字节是结构长 16、第二字节是族)、端口(网络序)、地址、8 字节零。
林填六地址
公开化「整数」而「整数」
文言:造六版 sockaddr_in6 二十八字节:族、端口、流号、十六字节地址、域号。汉语:构造 28 字节的 sockaddr_in6;macOS 使用长度字节与地址族 30,Linux 地址族为 10。
林填目的
公开化「整数」而化「整数」而「整数」
暂无说明。
进_域套接字
公开化「整数」而「整数」
文言:以无阻塞 UDP 问一型;苹果之套接字以 fcntl 置非阻塞。汉语:创建非阻塞 UDP 套接字;macOS 通过 fcntl 设置非阻塞与执行时关闭。
林域问型
公开化「整数」而化「整数」而化「整数」而化「整数」而「整数」
文言:以无阻塞 UDP 问一型;至多候二秒,得答则解首址。汉语:通过非阻塞 UDP 查询一种记录,最多等待两秒;解析返回的第一个匹配地址。
林域逐服
公开化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」
文言:逐行访解析服;一家不得,乃问下一家。汉语:依次尝试 resolv.conf 中的 nameserver;某台未返回可用 A/AAAA 时继续下一台。
林域搜词
公开化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」
文言:短名附搜索后缀,逐词问之。汉语:将主机名依次拼接 search 或 domain 行中的后缀,再经配置内的服务器查询。
林域搜行
公开化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」
暂无说明。
林域从文
公开化「整数」而化「整数」而化「整数」而化「整数」而「整数」
暂无说明。
林域查询
公开化「整数」而化「整数」而「整数」
文言:名表未得者,读解析配置,逐服问原名,未得则附搜索后缀再问。汉语:名表未命中时,读取 resolv.conf,先查询原主机名,再依次尝试搜索域补全。
林解析目的
公开化「整数」而化「整数」而「整数」
文言:先数字,次系统名表,末问 DNS。汉语:依次解析数字地址、/etc/hosts 名表与 DNS。
进_套层
公开化「有」而「整数」
文言:套接字之差:苹果无 SOCK_CLOEXEC 与 SOCK_NONBLOCK,以 fcntl 补之;SOL_SOCKET、SO_REUSEADDR、SO_ERROR 之值亦异。汉语:套接字的系统差别:macOS 的 socket 不认 SOCK_CLOEXEC、SOCK_NONBLOCK,建好后用 fcntl 补(F_SETFD FD_CLOEXEC;F_GETFL/F_SETFL O_NONBLOCK=4);accept 出的套接字在 macOS 上继承监听者的非阻塞标志,这里统一改回阻塞(与 Linux 的 accept4 一致)。SOL_SOCKET:Linux 1、macOS 0xFFFF;SO_REUSEADDR:2、4;SO_ERROR:4、0x1007。
进_苹置标
公开化「整数」而化「爻」而「整数」
暂无说明。
进_套接字
公开化「爻」而化「整数」而「整数」
暂无说明。
进_设项
公开化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」
暂无说明。
进_取项
公开化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」
暂无说明。
进_绑定
公开化「整数」而化「整数」而化「整数」而「整数」
暂无说明。
进_连
公开化「整数」而化「整数」而化「整数」而「整数」
暂无说明。
进_听
公开化「整数」而化「整数」而「整数」
暂无说明。
进_接
公开化「整数」而「整数」
暂无说明。
进_关半
公开化「整数」而化「整数」而「整数」
暂无说明。
进_套名
公开化「整数」而化「整数」而化「整数」而「整数」
暂无说明。
林网败
公开化「整数」而化「整数」而「整数」
文言:败则闭柄而返其码。汉语:出错时关闭套接字并返回状态码。
原底_监听
公开化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」
暂无说明。
原底_连接开始
公开化「整数」而化「整数」而化「整数」而化「整数」而「整数」
暂无说明。
原底_连接完成
公开化「整数」而「整数」
暂无说明。
原底_接受
公开化「整数」而化「整数」而「整数」
暂无说明。
原底_关闭写
公开化「整数」而「整数」
暂无说明。
原底_取本地端口
公开化「整数」而化「整数」而「整数」
暂无说明。
原底_设无延迟
公开化「整数」而化「整数」而「整数」
暂无说明。