如果我有以下 C 代码:
int main(int argc, char **arg)
{
int x = open("testfilefromc", O_RDWR | O_CREAT);
return 0;
}
当我编译和运行时不会不合理地创建这个:
-rw-r----- 1 joewass staff 0B 31 Jan 21:17 testfilefromc
但是下面的 C 代码,编译成 Python 模块:
const char *filename = "testfilefrompython";
context->fd = open(filename, O_RDWR | O_CREAT);
做这个:
---------- 1 joewass staff 165B 31 Jan 21:09 testfilefrompython
毫不奇怪,创建文件的代码下一次无法打开它!
为什么要以零权限创建文件?为什么编译成 Python 模块的 C 中的行为会有所不同?我正在运行像我一样运行代码的python程序。
对于它的价值,我mmap
稍后会使用该文件。
谢谢!
乔
编辑:我知道我可以chmod
解决这个问题,问题是为什么?
编辑 2:感谢Rosh Oxymoron指出我错过了不那么可选的可选参数。TRWTF是第一个示例完全有效!