主机任务。豫
yuyan · 690 行 · 39036 字节 · UTF-8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690
寻观「底层库」之书。
寻观「客体二号」之「布局」之书。
寻观「客体二号」之「平台」之书。
寻观「客体二号」之「基础」之书。
寻观「客体二号」之「实例」之书。
寻观「客体二号」之「模块」之书。
寻观「客体二号」之「对象」之书。
寻观「客体二号」之「块设备」之书。
寻观「客体二号」之「文件系统」之书。
寻观「客体二号」之「宿主对象」之书。
寻观「客体二号」之「主机文件」之书。
寻观「客体二号」之「远程文件」之书。
寻观「客体二号」之「裸机底层句柄」之书。
「:文言:子进程之原语:父任务自文件系统读子程序,复制任务,子任务换其模块而自头重启,父任务候其退而取其退出码。汉语:同步子进程:父任务从文件系统读出程序字节(存成堆里的字节数组)、把命令行参数与程序名写进“送子任务之区”,然后 复制任务。子任务带着父任务的整份内存醒来:把程序字节换进模块窗口、把送来的参数与程序名拷成自己的、置“待重启”格(存新程序长度),解释循环因此退出,由 入口 的启动循环清空状态格后从头启动新程序;新程序返回则以零退出任务,自己调用退出进程则由退出任务直接以其码结束。父任务阻塞等待子任务、收回任务槽,把退出码交给调用者。启动失败(找不到程序、不是文件、过大、参数装不下、没有空闲任务槽)返回 127,与标准库“启动失败为一百二十七”一致。子任务不能访问块设备(设备只属于初始任务)。:」
「:文言:参数之存:把参数组之诸字符串,逐个书于送子任务之参数区。汉语:把参数数组(元组加个数)的各个字符串依次写进 送参数区:每项 [长度 4 字节][字节…] 对齐到 4;每写一项就更新个数;装不下返回 -1,全部写完返回 0。:」
「存参数逐个」乃化「整数」而化「整数」而化「整数」而化「整数」而「整数」也。
「存参数逐个」者会「内」而会「个数」而会「位」而会「写址」而
若「小于」于「位」于「个数」
则
虑「参」者「元组项」于「内」于「位」而
虑「无」者(「空引用检」于「参」)而
虑「长」者「字节数组长」于「参」而
虑「用量」者
「加」于(「减」于「写址」于「送参数区」)于(「加」于「长」于「八」)而
若「大于」于「用量」于「参数区大小」
则
「负一」
否则
虑「无」者(「写四」于「写址」于「长」)
而
虑「无」者
(「拷贝」于(「加」于「写址」于「四」)于(「加」于「参」于「一六」)于「长」)
而
虑「无」者(「写四」于「送参数区」于(「加」于「位」于「一」))而
「存参数逐个」
于「内」
于「个数」
于(「加」于「位」于「一」)
于(「加」于「写址」于(「位与」于(「加」于(「加」于「长」于「四」)于「三」)于(「减」于「零」于「四」)))
否则
「零」
也。
「存命令行参数」乃化「整数」而「整数」也。
「存命令行参数」者会「数组对」而
虑「内」者「元组项」于「数组对」于「零」而
虑「无」者
(「拆箱」于(「元组项」于「数组对」于「一」)于「状态_临时」)而
虑「个数」者「读四」于「状态_临时」而
虑「无」者(「写四」于「送参数区」于「零」)而
「存参数逐个」于「内」于「个数」于「零」于(「加」于「送参数区」于「四」)
也。
「:文言:本任务之命令行与程序名:自本任务之区读出,作宿主原语之果。汉语:命令行参数对象:从本任务的 参数区 造出字符串数组(元组加个数);程序名对象:从 程序名区 造出字节数组,区为空则用缺省名 /程序.wasm。:」
「填参数逐个」乃化「整数」而化「整数」而化「整数」而化「整数」而「有」也。
「填参数逐个」者会「内」而会「个数」而会「位」而会「读址」而
若「小于」于「位」于「个数」
则
虑「长」者「读四」于「读址」而
虑「串」者「新字节数组」于「长」而
虑「无」者
(「拷贝」于(「加」于「串」于「一六」)于(「加」于「读址」于「四」)于「长」)而
虑「无」者(「设元组项」于「内」于「位」于「串」)而
「填参数逐个」
于「内」
于「个数」
于(「加」于「位」于「一」)
于(「加」于「读址」于(「位与」于(「加」于(「加」于「长」于「四」)于「三」)于(「减」于「零」于「四」)))
否则
「元」
也。
「命令行参数对象」乃化「有」而「整数」也。
「命令行参数对象」者会「无」而
虑「个数」者「读四」于「参数区」而
虑「内」者「新元组」于「个数」而
虑「无」者
(「填参数逐个」于「内」于「个数」于「零」于(「加」于「参数区」于「四」))而
虑「外」者「新元组」于「二」而
虑「无」者(「设元组项」于「外」于「零」于「内」)而
虑「无」者(「设元组项」于「外」于「一」于(「装箱整」于「个数」))而
「外」
也。
「程序名对象」乃化「有」而「整数」也。
「程序名对象」者会「无」而
虑「长」者「读四」于「程序名区」而
若「等零」于「长」
则
「字节串常量」于(「静态串」于『/程序.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 捕获输出。:」
「加载并复制」乃
化「整数」而
化「整数」而
化「整数」而
化「整数」而
化「整数」而
「整数」
也。
「加载并复制」者会「出」而会「长」而会「项」而会「参数对」而会「模式」而
虑「数据长」者「读字段」于(「条目址」于「项」)于「条_数据长」而
若「或者」于(「无符号大于」于「数据长」于「最大主程序长」)
于(「小于」于「数据长」于「八」)
则
「负一」
否则
虑「程序」者「新字节数组」于「数据长」而
若「不等于」于(「fs读文件」于「项」于(「加」于「程序」于「一六」))于「零」
则
「负一」
否则
(
若「不等于」于(「存命令行参数」于「参数对」)于「零」
则
「负一」
否则
虑「无」者(「写四」于「送程序名区」于「长」)
而
虑「无」者
(「拷贝」于(「加」于「送程序名区」于「四」)于「出」于「长」)
而
虑「无」者「传工作目录」于「元」
而
虑「原模式」者「读四」于「状态_是子任务」
而
虑「无」者(「写四」于「状态_是子任务」于「模式」)
而
虑「无」者
((「写四」于「状态_中断挂起」于「零」);
「中断查询」于「元」)
而
虑「子号」者「复制任务」于「元」
而
若「等零」于「子号」
则
((「子任务改装」于「程序」于「数据长」);
「零」)
否则
虑「无」者(「写四」于「状态_是子任务」于「原模式」)
而
虑「无」者
(「写四」于(「加」于「送程序名区」于「输入路径偏」)于「零」)
而
虑「无」者
(「写四」于(「加」于「送程序名区」于「环境偏」)于「零」)
而
若「小于」于「子号」于「零」则「负一」否则「子号」
)
也。
「解析并复制」乃化「整数」而化「整数」而化「整数」而「整数」也。
「解析并复制」者会「名对象」而会「参数对」而会「模式」而
虑「出」者「读四」于「状态_文件系统_路径缓」而
虑「长」者「规范参数」于「名对象」于「出」而
若「或者」于(「小于」于「长」于「零」)于(「大于」于「长」于「程序名上限」)
则
「负一」
否则
虑「项」者「索引查」于「出」于「长」而
若「小于」于「项」于「零」
则
「负一」
否则
(
若「不等于」于(「项种类」于「项」)于「种类_文件」
则
「负一」
否则
「加载并复制」于「出」于「长」于「项」于「参数对」于「模式」
)
也。
「收尾同步」乃化「整数」而化「整数」而「整数」也。
「收尾同步」者会「子号」而会「模式」而
虑「无」者「接收捕获」于「子号」而
虑「码」者「等待任务」于「子号」而
虑「无」者「回收任务」于「子号」而
「码」
也。
「运行子进程」乃化「整数」而化「整数」而化「整数」而「整数」也。
「运行子进程」者会「名对象」而会「参数对」而会「模式」而
虑「子号」者「解析并复制」于「名对象」于「参数对」于「模式」而
若「小于」于「子号」于「零」则
「子进程失败码」
否则
(若「等零」于「子号」则「零」否则「收尾同步」于「子号」于「模式」)
也。
「:文言:子进程诸原语之门:四十三继承流,四十四传递出,四十五弃其出而返爻,四十六捕其出而返三元组。汉语:宿主原语 43(继承标准流)、44(传递输出)返回退出码;45(运行,丢弃输出)返回“退出码是否为零”的爻;46(获取输出)捕获子进程的标准输出与标准错误,返回(退出码是否为零,标准输出,标准错误)三元组,启动失败得(假,空,空)。:」
「子进程原语」乃化「整数」而化「整数」而「整数」也。
「子进程原语」者会「号」而会「参」而
若「等」于「号」于「四六」
则
虑「无」者「重置捕获」于「元」而
虑「码」者
「运行子进程」于(「元组项」于「参」于「零」)于(「元组项」于「参」于「一」)于「三」而
虑「结果」者「新元组」于「三」而
虑「无」者
(「设元组项」于「结果」于「零」于(「装箱整」于(「爻整」于(「等零」于「码」))))而
虑「无」者
(「设元组项」于「结果」于「一」于(「取捕获串」于「零」))而
虑「无」者
(「设元组项」于「结果」于「二」于(「取捕获串」于「一」))
而
「结果」
否则
虑「模式」者「选择」于(「等」于「号」于「四五」)于「二」于「一」而
虑「码」者
「运行子进程」于(「元组项」于「参」于「零」)于(「元组项」于「参」于「一」)于「模式」
而
若「等」于「号」于「四五」
则
「装箱整」于(「爻整」于(「等零」于「码」))
否则
「装箱整」于「码」
也。
「:文言:异步子进程:启而不候;收之则排空邮箱、察其已毕否。汉语:异步子进程(一次只能有一个,内核只有两个任务槽):启动异步子进程解析并复制(模式 3)后立即返回句柄 1(失败为负:已有异步子进程 -24、路径或加载失败 -2);尝试收取异步子进程排空邮箱(对每条消息回复确认)、看任务状态位 4,未结束返回(0,0,0,空,空),已结束则取退出码、回收任务、返回(1,任务号,退出码,标准输出,标准错误);输入输出多路等待不真等,对每个关注项报告“就绪”(事件即所关注的掩码),使异步框架转回来轮询。:」
「异步结果」乃化「整数」而化「整数」而化「整数」而化「整数」而「整数」也。
「异步结果」者会「完成」而会「号」而会「码」而会「带串」而
虑「结果」者「新元组」于「五」而
虑「无」者(「设元组项」于「结果」于「零」于(「装箱整」于「完成」))而
虑「无」者(「设元组项」于「结果」于「一」于(「装箱整」于「号」))而
虑「无」者(「设元组项」于「结果」于「二」于(「装箱整」于「码」))而
虑「无」者
(「设元组项」
于「结果」
于「三」
于(「选择」于(「不等于」于「带串」于「零」)于(「取捕获串」于「零」)于(「新字节数组」于「零」)))而
虑「无」者
(「设元组项」
于「结果」
于「四」
于(「选择」于(「不等于」于「带串」于「零」)于(「取捕获串」于「一」)于(「新字节数组」于「零」)))
而
「结果」
也。
「启动异步原语」乃化「整数」而「整数」也。
「启动异步原语」者会「参」而
若「不等于」于(「读四」于「状态_异步子号」)于「零」则
「装箱整」于(「减」于「零」于「二四」)
否则
虑「无」者「重置捕获」于「元」而
虑「子号」者
「解析并复制」于(「元组项」于「参」于「零」)于(「元组项」于「参」于「一」)于「三」
而
若「小于」于「子号」于「零」则
「装箱整」于(「减」于「零」于「二」)
否则
(
若「等零」于「子号」则「装箱整」于「零」
否则
((「写四」于「状态_异步子号」于(「加」于「子号」于「一」));
「装箱整」于「一」)
)
也。
「收取异步原语」乃化「整数」而「整数」也。
「收取异步原语」者会「参」而
虑「登记」者「读四」于「状态_异步子号」而
虑「无」者
(「若则致命」于(「等零」于「登记」)于「一二七」于(「静态串」于『无效的异步子进程句柄』))而
虑「子号」者「减」于「登记」于「一」而
虑「无」者(「排空捕获」于「子号」)而
虑「状」者「任务状态」于「子号」而
若「等零」于(「位与」于「状」于「四」)
则
「异步结果」于「零」于「零」于「零」于「零」
否则
虑「无」者(「排空捕获」于「子号」)
而
虑「码」者「任务退出码」于「子号」
而
虑「无」者「回收任务」于「子号」
而
虑「无」者(「写四」于「状态_异步子号」于「零」)而
「异步结果」于「一」于「子号」于「码」于「一」
也。
「多路等待原语」乃化「整数」而「整数」也。
「多路等待原语」者会「参」而
虑「关注」者「元组项」于「参」于「零」而
虑「项们」者「元组项」于「关注」于「零」而
虑「无」者
(「拆箱」于(「元组项」于「关注」于「一」)于「状态_临时」)而
虑「个数」者「读四」于「状态_临时」而
虑「事件们」者「新元组」于「个数」而
虑「无」者
(
递归虑「逐」其化「整数」而「有」者会「位」而
若「小于」于「位」于「个数」
则
((「设元组项」于「事件们」于「位」于(「元组项」于(「元组项」于「项们」于「位」)于「一」));
「逐」于(「加」于「位」于「一」))
否则
「元」
而
「逐」于「零」
)
而
虑「对」者「新元组」于「二」而
虑「无」者(「设元组项」于「对」于「零」于「事件们」)而
虑「无」者(「设元组项」于「对」于「一」于(「装箱整」于「个数」))而
虑「结果」者「新元组」于「二」而
虑「无」者(「设元组项」于「结果」于「零」于(「装箱整」于「零」))而
虑「无」者(「设元组项」于「结果」于「一」于「对」)而
「结果」
也。