4.9 示例:映射文件到内存

我们现在需要另一个叫 open 的系统调用。该系统调用使用名字打开文件,并获取到其描述符。

参见表 4-2 来获取细节:

Table 4-2.open 系统调用

REGISTER VALUE MEANING
rax 2 系统调用号
rdi 文件名 内容是指向 null 结尾字符串的指针
rsi flags 权限标记位的组合(read only,write only,或者读写均可)
rdx mode 如果用 open 来创建文件,rdx 会持有该文件的权限

文件映射到内存需要三个简单步骤:

  • 使用 open 系统调用打开文件,描述符会被放入 rax 寄存器。
  • 调用 mmap,并传入相应的参数。其中的一个参数就是步骤一获取到的文件描述符。
  • 使用我们在第二章写的 print_string 子过程来打印内容。为了简洁我们暂时省略关闭和错误检查过程。

results matching ""

    No results matching ""