豫豫言文档API ATLAS
入口包说明.html
62 模块1862 名称
← 全部模块

模块 / 18

原生进程。豫

原生进程。豫

100公开名称

进_读

公开
化「整数」而化「整数」而化「整数」而「整数」

文言:原生(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。

进_苹置标

公开
化「整数」而化「爻」而「整数」

暂无说明。

进_套接字

公开
化「爻」而化「整数」而「整数」

暂无说明。

进_设项

公开
化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」

暂无说明。

进_取项

公开
化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」

暂无说明。

进_绑定

公开
化「整数」而化「整数」而化「整数」而「整数」

暂无说明。

进_连

公开
化「整数」而化「整数」而化「整数」而「整数」

暂无说明。

进_听

公开
化「整数」而化「整数」而「整数」

暂无说明。

进_接

公开
化「整数」而「整数」

暂无说明。

进_关半

公开
化「整数」而化「整数」而「整数」

暂无说明。

进_套名

公开
化「整数」而化「整数」而化「整数」而「整数」

暂无说明。

林网败

公开
化「整数」而化「整数」而「整数」

文言:败则闭柄而返其码。汉语:出错时关闭套接字并返回状态码。

原底_监听

公开
化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」

暂无说明。

原底_连接开始

公开
化「整数」而化「整数」而化「整数」而化「整数」而「整数」

暂无说明。

原底_连接完成

公开
化「整数」而「整数」

暂无说明。

原底_接受

公开
化「整数」而化「整数」而「整数」

暂无说明。

原底_关闭写

公开
化「整数」而「整数」

暂无说明。

原底_取本地端口

公开
化「整数」而化「整数」而「整数」

暂无说明。

原底_设无延迟

公开
化「整数」而化「整数」而「整数」

暂无说明。