C-绝对路径中文件的大小

披风

问:是否有获取文件的大小为手段,off_t具有绝对当文件路径文件路径相对不知道当前工作目录

这很可能被标记为重复,但我相信它的问题,如充分瓦里斯还是这个,因为我不希望使用相对路径。

就像许多人一样(看来),我陷入了陷阱,即当寻求获取文件信息时,stat()使用的是绝对路径名,而不是相对路径名(相对于当前工作目录)。我有一个文件的绝对路径,需要标识as的大小off_t我发现的第二个问题是绝对路径从错误的地方-也可能超过指向-asidePATH_MAXlimits.h?。

此处找到的下面的函数提供了一种获取off_t具有相对路径的方法的方法。但是这显然会No such file or directory通过errno通过绝对路径返回,因为它使用stat()

#include <sys/stat.h>
#include <string.h>
#include <stdio.h>
#include <errno.h>

off_t fsize(const char *filename) {
    struct stat st;

    if (stat(filename, &st) == 0)
        return st.st_size;

    fprintf(stderr, "Cannot determine size of %s: %s\n",
            filename, strerror(errno));

    return -1;
}

因为我知道有人会问;有人告诉我,这chdir()既不是线程安全的,也不是好的做法。我应该避免更改当前的工作目录。还建议我不要这样做,fseek()但是没有给出任何理由。

路易斯·科罗拉多

stat(2)允许您使用根目录中的完整路径名(如果路径以开头/)或当前目录中的相对路径(否则,请参阅path_resolution(7))指定文件。即使您不知道任何名称(如果您只有打开的文件描述符,也不知道该文件的名称),也可以进行fstat(2)系统调用。

请注意以下事实:文件大小可能会在stat(2)您进行的知道文件大小调用与之后执行的任何操作之间改变O_APPEND如果您想确保自己的写作不会被他人打扰,请考虑用标志打开

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从Perl中的c:\ root打印某些文件的绝对路径?

miniz C 不能用绝对路径压缩文件

C ++从相对获得模型/资源的绝对路径

从std :: filesystem :: path C获取绝对路径

为什么C#中读取文本文件用的是绝对路径,而且路径会变

CMake:从ExternalProject链接共享的C ++对象会生成具有相对路径的二进制文件,而不是绝对路径

从绝对路径中找到文件的大小

“AddPermission”时 C# 应用程序域异常,说绝对路径是必需的?

即使我通过-C更改为dir,为什么tar也使用绝对路径?

C# 绝对路径获取 System.IO.DirectoryNotFoundException

返回不同文件夹中文件的绝对路径

如何获取项目的/ resources文件夹中文件的绝对路径

本地文件对象的绝对路径

Nuspec文件目标绝对路径

从绝对路径下载文件

获取文件的绝对路径

如何获取文件的绝对路径

如何知道Ubuntu中文件夹的绝对路径

Python:如何获取导入模块中文件的绝对路径

使用 oswalk + fnmatch 打印出 Python 2 中文件的*准确* 绝对路径

当为-C选项指定绝对路径与本地路径时,为什么make的行为有所不同?

如果具有绝对路径,C ++中的“ #include”是否仍可以在其他PC上使用?

Linux C ++尝试使用绝对路径加载一个特定的库,而其他所有库则使用相对路径链接

获取通过类路径加载的文件的绝对路径

如何确定文件路径是否为绝对路径?

创建绝对路径

Jsoup绝对路径

如何使用文件的绝对路径打开文件?

从绝对路径+相对或绝对路径创建新的绝对路径