Blu*_*sul 2 c linux filesystems system system-calls
我使用 open 系统调用按以下方式创建和打开文件:
fileID = open("aFile", O_CREAT|O_RDWR|O_TRUNC);
Run Code Online (Sandbox Code Playgroud)
我希望创建的文件具有读写权限,有时确实如此,但只有当我运行时ls -l我才会看到 w,或 r,或 x,或 ws,或 rwx 等。如果我运行我的程序通过3次系统调用,我每次可能会得到3种不同的文件权限设置aFile。我不知道是什么导致了这个问题,因为它似乎是随机设置的。关于可能的原因有什么想法吗?
open()采用第三个参数,该参数在创建文件时生效。该参数是一组标志,用于修改新文件的访问模式。如果您没有为此参数设置值,open()则将为该函数提供适用于该参数的寄存器或堆栈位置中的任何内容——具体取决于特定的系统和编译器。无论如何,它不太可能是您想要的,并且将以不可预测的方式依赖于前面的代码。
在类 Unix 系统上,man 2 open应该为您提供所有详细信息。