【问题标题】:how to know the full path of new created file?如何知道新创建文件的完整路径?
【发布时间】:2011-10-29 18:14:36
【问题描述】:

看到我做了一个程序,它只使用创建一个新文件

fopen()

现在我想在 ma 程序中打印该文件的完整路径。

linux 用 c 编程怎么可能?

【问题讨论】:

  • 创建文件的路径是操作系统而不是编程语言的问题

标签: c linux path fopen


【解决方案1】:

main() 中,您应该获得可执行文件的完整路径为 argv[0]。您的文件已在此处创建。

另外,AFAIK,fopen 原型是

FILE * fopen(const char *restrict filename, const char *restrict mode);

那么简单

fopen() 

行不通(如果我们谈论的是标准 C)。

【讨论】:

  • 否;您不能保证 argv[0] 包含完整路径,并且绝对不能保证,甚至不能期望当前工作目录是可执行文件所在的位置。
【解决方案2】:

实际上,标准 C 本身无法做到这一点。但是 POSIX 标准有getcwd。您要做的是将用于创建文件的路径附加到从getcwd 获得的工作目录路径中——当然,除非用于创建文件的路径是绝对路径。

或者,您可以使用realpath

【讨论】:

    【解决方案3】:

    你已经有了一个文件名,所以问题更多的是如何检测它已经是绝对路径还是相对路径,并将后者变成绝对路径。

    如果它已经是绝对路径,那么字符串将以/ 开头。如果它不是绝对路径,那么您知道它是相对于您当前的工作目录的。鉴于此,您可以确定进程的当前工作目录并将文件路径附加到该目录。

    如果您还想将其解析为真实路径(解析符号链接,删除 ... 部分),您可以使用 realpath 函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-14
      • 2013-10-28
      • 2022-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多