【发布时间】:2020-10-19 09:08:05
【问题描述】:
在我的代码中,我使用 mkstemp() 函数(我在 Linux 上)创建了一个具有随机名称的文件。这个函数返回的是一个int 是一个file descriptor。
int fd;
char temp[] = "tempXXXXXX";
fd = mkstemp(temp);
稍后我可以通过int 文件描述符使用fdopen() 访问该文件。
FILE *file_ptr = NULL;
file_ptr = fdopen(fd);
但在我的程序结束时,我想看看该文件是否仍然存在,并使用我创建它时给出的随机名称(如果成功,程序应该更改该文件名)。如果在该文件上运行rename() 函数成功,我可以设置一个标志,但是当我只有它的文件描述符时,我仍然不知道如何删除它。
if rename files => remove the temp file
我该怎么做?或者如果我有file descriptor,有没有办法获取文件名?
【问题讨论】:
-
这能回答你的问题吗? Retrieve filename from file descriptor in C
-
@KamilCuk
unlink需要文件名,mkstemp不提供。 -
我不认为你可以。名称被删除,而不是文件。一个文件可能有多个名称,或者没有 - Linux 如何知道要删除哪个名称?
-
mkstemp已经有了文件名 - 它是mkstemp(char *template)。只需mkstemp(template); unlink(template)。 -
@John mkstemp 修改模板字符串以便返回文件名。
标签: c linux file file-descriptor