命名匿名文件指针

问题描述 投票:0回答:1

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

c posix ansi-c
1个回答
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扩展。

© www.soinside.com 2019 - 2024. All rights reserved.