文件接口规范 0.1.0
本包只声明接口,文件句柄与目录权的构造属于宿主实现。应用依赖本包是必需条件;宿主仍须在本次运行中单独授予具名目录。
取得已授目录根据本次运行的授权表取目录权。名称未授权时返回未获授权;接口包在宿主上不存在时于构建或装载阶段失败。- 路径使用
/分隔的相对字符串;为空、以/起始、含空段、.、..或零字节者为输入无效。合法路径的组成段按 Unicode 码点原样比较,不隐式改大小写或正规化。宿主须把解析限制在目录权内,不因符号链接、重新命名或文件系统大小写规则逃出授权边界;不能保持此约定的宿主不得宣称实现本包。 打开只读文件取得只能读的文件柄。打开可写文件打开已存在的可写文件,不隐式创建或截断。其他打开模式以后另加接口函数。读取文件的上限须非负。正上限时,返回长度 1 至上限的字节串,或独立的文件读尽;上限为零返回空字节串。读取可能挂起,应用不得假定立即返回。写入文件返回本次实际接受的字节数;输入为空时返回零,输入非空且成功时须返回一至输入长度之间的值。暂时不能接受任何字节时返回资源暂不可用,不能以“成功写入零字节”使调用者无限重试。部分写入由调用者继续提交。写入可能挂起,返回不保证数据已落盘。关闭文件无论成功或失败都使句柄失效;失败可表示写入或关闭时的宿主错误,调用者不能再用旧句柄重试。其后读写返回资源已失效。首版要求调用者串行使用同一句柄;并发读写及重复关闭均须返回输入无效或资源已失效,不得产生未定义行为。
规范样例须覆盖:未授权目录、路径越界、读到末尾、嵌零字节、部分写入、关闭后使用,以及读取和写入的权限分离。