x86_64

std.system.os.darwin.x86_64

fun page_size

pub fun page_size() usize;

fun pipe

pub fun pipe(fds: *i32) i64;

创建单向管道

这样做只有一个原因:原始 XNU pipe 陷阱在 rax/rdx 中返回两个描述符,并通过进位标志信号失败,而系统调用 DSL 捕获不到两者。libSystem 的 pipe(2) 是一个普通的 C 函数,通过调用者的数组写入两个描述符并将失败报告为 -1,因此特定于架构的汇编已经没有事情可做,包装器现在在两个 darwin 架构上都是相同的——它仅存在于这里,因为 pipe 是每个架构模块的发布接口的一部分。

fds: 指向两个 i32 的指针;fds[0] = 读端,fds[1] = 写端 ret: 成功时为 0,或负数的 errno