微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

OCaml Pervasives 中的文件权限标志如何工作?

如何解决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;;

为名为 .txt文件打开一个通道,并在其末尾附加“yolo”。

检查新创建文件的权限时出现问题。直觉上,我会假设 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 举报,一经查实,本站将立刻删除。