如何解决OCaml Pervasives 中的文件权限标志如何工作?
我一直在尝试向 OCaml 中的文件写入一些文本,但偶然发现了以下问题。
使用 open_out_gen
打开频道允许为新创建的文件设置权限以及打开文件的模式。
例如:
let write_to_file perm =
let oc = open_out_gen [Open_creat; Open_append] perm ((Int.to_string perm )^".txt") in
Printf.fprintf oc "%s\n" "yolo";
close_out oc;;
为名为
检查新创建文件的权限时出现问题。直觉上,我会假设 ls -l
显示的权限标志将等于 perm
的值。我的意思是,如果我使用 write_to_file 777
调用上述函数,新文件应该具有所有者、组和其他人的 rwx 标志。
但是当我检查它的权限时,它显示“-r----x--t”,因此该文件可以由所有者读取,由所有者组中的每个人执行,并且只能由所有者的所有者删除文件。
我的问题是为什么会这样,我如何才能真正为每个人授予 rwx 之类的权限?
解决方法
您使用 777
作为权限,它是一个以 10 为底的数字。在通常用于数字文件权限的 base-8 表示法中,这将是 1411
,它对应于您描述的符号权限 - 粘滞位、用户可读、组和其他可执行文件(未显示其他可执行文件位通过 ls -l
因为粘滞位是 t
但它在那里)。
在 ocaml 中,base-8 文字以 0o
为前缀,因此 write_to_file 0o777
会为您提供所需的权限。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。