使用fchmod(int fildes, mode_t mode)
比使用chmod(const char * path,mode_t mode)更好吗?
答案 0 :(得分:8)
它几乎完全相同。 chmod
将花费更长的时间,因为它必须将路径转换为inode或filenode,而fchmod
已经查找了inode / filenode。
当然,fchmod
可能会出现更少的错误情况,因为已知该文件存在,有开放权限等。
答案 1 :(得分:6)
这取决于竞争条件是否值得关注。使用chmod
,您可能会有人从您的下方重命名文件并修改错误的文件。在某些情况下(特别是如果你是根),这可能是一个巨大的安全漏洞。
答案 2 :(得分:0)
如果您正在处理文件的内容,那么您已经拥有了文件描述符(因为您使用了open()
来获取它,或者因为您使用了fopen()
并且可以使用fileno()
在获取它的FILE *
指针上,您可以使用fchmod()
。如果您不想打开文件进行任何处理而只是更改模式,请使用chmod()
。