命名匿名文件指针

时间:2016-09-19 15:22:17

标签: c posix ansi

如果文件指针 fp 指向一个打开的文件,是否有一种可移植的方式来为它命名?在这种情况下,不能使用重命名函数,因为我没有引用该文件的当前名称。

1 个答案:

答案 0 :(得分:3)

在Linux上,您可以使用linkat

int linkat(int olddirfd, const char *oldpath,
           int newdirfd, const char *newpath, int flags);

指定AT_EMPTY_PATH标志。例如,类似的东西:

linkat(fileno(fp), NULL, AT_FDCWD, "/path/to/new/name", AT_EMPTY_PATH);

请注意,这不会重命名原始文件,它只会创建一个新的硬链接(即新名称)。此方法也不可移植,因为AT_EMPTY_PATH是Linux扩展。