【发布时间】:2010-10-07 04:40:05
【问题描述】:
我正在尝试打开我刚刚使用 open64() 创建的文件。但是,当我尝试打开文件时,系统调用失败并显示 ENOENT。我知道文件存在的事实,因为我刚刚创建了它,并且 ls 将它显示在它应该在的目录中。当我尝试使用 open() 打开它时,它会因 EOVERFLOW 而失败,这是预期的,但它也意味着文件存在。有任何想法吗?
const char* filename = pDt->evtfname;
int evtFile;
evtFile = open64(filename, O_RDONLY);
perror("The following error occurred");
【问题讨论】:
-
你确定文件名引用了文件的路径,而不仅仅是没有目录的文件名吗?
-
是的,我确定。我已经用gdb来验证了。
-
当您尝试使用
open()和open64()打开文件时,文件名是否每次都完全相同? -
是的。 (字符限制的垃圾)
-
这是一个附带问题,但你永远不应该写
open64。使用适合 64 位off_t的编译环境编译您的程序。在 Linux 上,这意味着在您的CFLAGS中使用-D_FILE_OFFSET_BITS=64。