存参数逐个
公开化「整数」而化「整数」而化「整数」而化「整数」而「整数」
文言:子进程之原语:父任务自文件系统读子程序,复制任务,子任务换其模块而自头重启,父任务候其退而取其退出码。汉语:同步子进程:父任务从文件系统读出程序字节(存成堆里的字节数组)、把命令行参数与程序名写进“送子任务之区”,然后 复制任务。子任务带着父任务的整份内存醒来:把程序字节换进模块窗口、把送来的参数与程序名拷成自己的、置“待重启”格(存新程序长度),解释循环因此退出,由 入口 的启动循环清空状态格后从头启动新程序;新程序返回则以零退出任务,自己调用退出进程则由退出任务直接以其码结束。父任务阻塞等待子任务、收回任务槽,把退出码交给调用者。启动失败(找不到程序、不是文件、过大、参数装不下、没有空闲任务槽)返回 127,与标准库“启动失败为一百二十七”一致。子任务不能访问块设备(设备只属于初始任务)。
文言:参数之存:把参数组之诸字符串,逐个书于送子任务之参数区。汉语:把参数数组(元组加个数)的各个字符串依次写进 送参数区:每项 [长度 4 字节][字节…] 对齐到 4;每写一项就更新个数;装不下返回 -1,全部写完返回 0。
存命令行参数
公开化「整数」而「整数」
暂无说明。
填参数逐个
公开化「整数」而化「整数」而化「整数」而化「整数」而「有」
文言:本任务之命令行与程序名:自本任务之区读出,作宿主原语之果。汉语:命令行参数对象:从本任务的 参数区 造出字符串数组(元组加个数);程序名对象:从 程序名区 造出字节数组,区为空则用缺省名 /程序.wasm。
命令行参数对象
公开化「有」而「整数」
暂无说明。
程序名对象
公开化「有」而「整数」
暂无说明。
传工作目录
公开化「有」而「有」
文言:子任务之改装与重启:子任务醒后,换其模块、取其参数,置待重启;解释循环退出后,重启之备清状态格。汉语:子任务改装(复制任务返回零之后立刻调用):把新程序字节拷进模块窗口,把送来的参数区与程序名区拷成自己的,把新程序长度写进 状态_待重启;此后调用链原路返回,解释循环见待重启即退出。重启准备(由 入口 的启动循环在重新启动之前调用):先把动态区(区域起到内存末)清零——各区与位图都假定拿到的是全零内存,而复制来的内存里是父任务的旧数据——再清空状态格区,写回模块长度,块设备标为失败(子任务不用磁盘),清掉测试导出名与参数,撤待重启格。汉语补:这样做是因为状态格清零后不能再分配对象,所以清零必须等调用链全部返回之后。
文言:当前目录之传:父写于送区,子拷于程序名区,重启后复之。汉语:传工作目录(父任务,复制任务之前):把当前目录写进 送程序名区 + 工作目录偏;继承当前目录(子任务重启之后,文件系统初始化之后):若本任务是子任务且程序名区里存有当前目录,就把它设为当前目录。
换行变零
公开化「整数」而化「整数」而「有」
文言:标准输入之重定向与环境之送:父任务于复制之前以原语写送区,子任务改装拷之,重启后自文件读输入。汉语:设置子进程输入(原语 70):把输入文件路径(规范成绝对路径,至多路径上限,空串表示清除)写进 送程序名区 + 输入路径偏(长度 4 字节 + 路径字节),成功返回 0,路径过长或无效返回 -1;设置子进程环境(原语 71):把环境块(“名=值” 以换行相隔的字节数组,空串表示清除)写进 送程序名区 + 环境偏(总长 4 字节 + 以零结尾的字符串们,换行换成零,总长含末尾的零,至多环境上限),成功返回 0,过长返回 -1。两者都在下一次复制任务之后由 加载并复制 清零。加载输入文件(子任务重启后,在发现宿主类型之后调用):程序名区 + 输入路径偏 处有路径,就用 文件原语分派(29)读出整个文件(子任务经邮箱远程读),字节数组存进 状态_输入缓冲、位置置 0(读失败当作空文件);没有路径则清空 状态_输入缓冲。
设置输入路径
公开化「整数」而「整数」
暂无说明。
设置环境块
公开化「整数」而「整数」
暂无说明。
加载输入文件
公开化「有」而「有」
暂无说明。
继承当前目录
公开化「有」而「有」
暂无说明。
暂存大程序
公开化「整数」而化「整数」而「有」
文言:大程序之暂置:程序逾模块窗,则置于动态区之尾。汉语:程序字节超过模块窗口时,先在动态区尾分配一块把它拷过去,地址记入 状态_暂存址(重启准备再搬到区域起)。
子任务改装
公开化「整数」而化「整数」而「有」
暂无说明。
大程序落位
公开化「整数」而化「整数」而化「整数」而「有」
文言:大程序落位:搬程序至区域起,余皆清零。汉语:把暂存在动态区尾的程序搬到 区域起(可能与来源重叠,拷贝是 memmove),然后把程序之后直到内存末全部清零(包括暂存的原处)。
重启准备
公开化「整数」而「有」
暂无说明。
重置捕获
公开化「有」而「有」
文言:输出之捕获:父任务以邮箱收子任务之出,积于两缓冲;字节数组随需倍增。汉语:输出捕获(父任务一侧):重置捕获清空两个缓冲;捕获追加把一个字节追加到标准输出(流位 0)或标准错误(流位 1)的缓冲,满了就倍增(起始 64 字节);处理捕获消息把一条消息里的一至三个字节追加进去;接收捕获循环“阻塞等待消息、追加、回复确认”,直到等待返回空(子任务已退出);取捕获串按已用长度拷出一个新字节数组。
捕获追加
公开化「整数」而化「整数」而「有」
暂无说明。
捕获追加块
公开化「整数」而化「整数」而化「整数」而「有」
文言:捕获一块:容不足则扩至倍或所需。汉语:把(址,数)一块字节追加到捕获缓冲(流位 0 标准输出、1 标准错误);容量不够时扩到两倍或所需大小(取大者)。原生系统读管道时用。
捕获字节们
公开化「整数」而「有」
暂无说明。
处理捕获消息
公开化「整数」而化「整数」而「整数」
文言:处理一信:远程文件请求由 服务远程调用 办理并自行确认,余者为输出之字节。汉语:处理捕获消息:标为 0x60 的是子任务发来的远程文件请求头,交给 服务远程调用(它自己发过全部确认,返回 1);其余按输出字节追加,返回 0(由外层回确认)。
接收捕获
公开化「整数」而「有」
暂无说明。
排空捕获
公开化「整数」而「有」
暂无说明。
取捕获串
公开化「整数」而「整数」
暂无说明。
加载并复制
公开化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」
文言:运行子进程:定其路径,读其字节,送其参数,复制任务,父候子退。汉语:子进程的三段:解析并复制(把路径规范为绝对路径,查文件系统,读程序字节、写好要送给子任务的参数与程序名、复制任务)返回子任务号(父任务)、0(子任务,随后走 子任务改装 并重启)或 -1(任何准备阶段失败、没有空闲任务槽);收尾同步(父任务:模式 3 先接收捕获,再等待任务、回收任务,返回退出码);运行子进程 = 解析并复制 + 收尾同步,失败返回 子进程失败码。模式:1 继承输出,2 丢弃输出,3 捕获输出。
解析并复制
公开化「整数」而化「整数」而化「整数」而「整数」
暂无说明。
收尾同步
公开化「整数」而化「整数」而「整数」
暂无说明。
运行子进程
公开化「整数」而化「整数」而化「整数」而「整数」
暂无说明。
子进程原语
公开化「整数」而化「整数」而「整数」
文言:子进程诸原语之门:四十三继承流,四十四传递出,四十五弃其出而返爻,四十六捕其出而返三元组。汉语:宿主原语 43(继承标准流)、44(传递输出)返回退出码;45(运行,丢弃输出)返回“退出码是否为零”的爻;46(获取输出)捕获子进程的标准输出与标准错误,返回(退出码是否为零,标准输出,标准错误)三元组,启动失败得(假,空,空)。
异步结果
公开化「整数」而化「整数」而化「整数」而化「整数」而「整数」
文言:异步子进程:启而不候;收之则排空邮箱、察其已毕否。汉语:异步子进程(一次只能有一个,内核只有两个任务槽):启动异步子进程解析并复制(模式 3)后立即返回句柄 1(失败为负:已有异步子进程 -24、路径或加载失败 -2);尝试收取异步子进程排空邮箱(对每条消息回复确认)、看任务状态位 4,未结束返回(0,0,0,空,空),已结束则取退出码、回收任务、返回(1,任务号,退出码,标准输出,标准错误);输入输出多路等待不真等,对每个关注项报告“就绪”(事件即所关注的掩码),使异步框架转回来轮询。
启动异步原语
公开化「整数」而「整数」
暂无说明。
收取异步原语
公开化「整数」而「整数」
暂无说明。
多路等待原语
公开化「整数」而「整数」
暂无说明。