代码之家  ›  专栏  ›  技术社区  ›  tomdemuyt

fstat工作,stat不工作

  •  0
  • tomdemuyt  · 技术社区  · 6 年前

    我正在Raspbian上编译Angband变体,以下操作失败:

    struct stat txt_stat, raw_stat;
    
    /* Build the filename */
    path_build(buf, 1024, ANGBAND_DIR_EDIT, template_file);
    
    /* Access stats on text file */
    if (stat(buf, &txt_stat))
    {
      /* Error */
      msg_format("Oh dear, something went wrong with stat()! %s", strerror(errno));
      msg_format("Could not retrieve stats on the text file at {%s}", buf);
      return (-1);
    }
    

    让我非常恼火的是文件就在那里 ~/git/hellband/lib/edit/r_info.txt

    当我将上述代码替换为打开文件的代码时(使用相同的buf),然后使用 fstat() 在文件描述符上,它可以工作!!

    我不想打开文件(记住关闭该文件),我只想知道/修复发生了什么 stat() .

    PostScriptum 2020;结果是,当我使用Angband方法打开文件时,它自动扩展了~符号,这就是为什么它起作用了,而fstat起作用了。

    1 回复  |  直到 4 年前
        1
  •  1
  •   P.P    6 年前

    这很简单。 stat(2) 无法扩展或理解 ~ (颚化符)。

    你可以 HOME 相反例如 getenv("HOME") 然后在调用之前用您的文件名作为前缀 统计(2) .