如何知道新创建文件的完整路径?

时间:2011-08-18 12:27:02

标签: c linux path fopen

看到我制作了一个只使用

创建一个新文件的程序
fopen()

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

如何通过c编程在linux中实现这一点?

3 个答案:

答案 0 :(得分:2)

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

或者,您可以使用realpath

答案 1 :(得分:0)

你已经有了一个文件名,所以问题是如何检测它是否已经是绝对路径或相对路径,并将后者转变为绝对路径。

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

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

答案 2 :(得分:-3)

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

此外,AFAIK,fopen原型

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

所以很简单

fopen() 

不起作用(如果我们谈论标准C)。