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