dram.me

关于POSIX新增的openat及相关接口

前阵子(7月)Perl社区在讨论是否加入POSIX新增的openat及相关接口,虽然当时的讨论没有持续,但最近因为-i参数(用于直接更改文件)的一个bug,Perl开始使用linkat函数。

那么*at究竟是做什么的呢?可以看看POSIX的标准定义,以及这里的讨论,还有这份演示文档

简单来说,是为防止在多个操作中目录被改动。

例如检查目录是否存以及在该目录创建文件这两个步骤,在之间可能目录被改动,这存在资源竞争问题,并有安全风险。另外一些考虑可以看看这封邮件