天气: 晴朗
心情: 高兴
如果 NAME_MAX(文件名最大长度,不包括'\0')是 14,而我们想在当前目录下创建文件名长度超过 14 字节的文件,早期的
System V 系统(如 SVR2)会截断超出部分,只保留前 14 个字节;而由 BSD
衍生的(BSD-derived)系统会返回错误信息,并且把 errno 置为 ENAMETOOLONG。
如果NAME_MAX是14,而我们却试图在当前目录中创建一个其文件名包含15个字符的新文件,此时会发生什么哪?按照传统,早期的系统V版本允许这种
使用方法,但总是将文件名截短为14个字符,而且不给出任何信息,而BSD类的系统则返回出错状态,并将errno设置为ENAMETOOLONG。无声
无息地截短文件名会引起问题,而且他不仅仅影响到创建新文件。如果NAME_MAX是14,并且存在一个其文件名恰好就是14个字符的文件,那么以
pathname作为其参数的任意函数都无法确定该文件的原始名是什么? 其原因是这些函数无法判断该文件名是否被截短过。