为什么我们在TCL I/O中有4个权限参数



在TCL中,文件有四个权限参数。我想打开一个新文件并授予权限。看下面的例子:

open file_name.txt w 0666

在Linux中,我们拥有文件所有者/组/其他的权限。为什么我们在TCL中使用4个参数?第四个是什么(我不确定是第一个还是最后一个(?

permissions参数是一个整数,表示所有者/组/其他的3组3位。因此,所有3个组的rw权限都是二进制的110110110。以十进制计算,是438。但这并不十分明显。这就是为什么参数通常以八进制指定的原因。指示数字应解释为八进制的旧方法是添加前导0。但为了经得起未来的考验,你现在最好使用0o666。

open的文档确实指出可接受的参数模式是:

fileName
open fileName访问
open 文件名访问权限

然后将权限定义为:

如果在打开新文件的过程中创建了新文件,则permissions(整数(用于设置新文件的权限以及进程的文件模式创建掩码权限默认为0666。

参数大多与Unixopen()系统调用和fopen()库调用的参数映射得相当接近。很少有人真正指定权限(这是由你的umask修改的;Tcl没有公开任何处理方法(,因为默认值通常适用于大多数应用程序。

如果您需要更改您创建的文件的权限,请尝试file attributes:

# I prefer the symbolic permissions descriptors supported by this command
file attributes $fileName -permissions rw-rw-rw-

最新更新