我有一种情况,我需要获取文件名,以便我可以调用readlink()函数。我所拥有的是一个整数,它最初通过open()命令存储为文件描述符。问题是,我没有访问执行open()命令的函数(如果我这样做了,那么我不会发布这个)。 open()的返回值存储在有有权访问的结构中。使用文件描述符与readlink()
char buf[PATH_MAX];
char tempFD[2]; //file descriptor number of the temporary file created
tempFD[0] = fi->fh + '0';
tempFD[1] = '\0';
char parentFD[2]; //file descriptor number of the original file
parentFD[0] = (fi->fh - 1) + '0';
parentFD[1] = '\0';
if (readlink(tempFD, buf, sizeof(buf)) < 0) {
log_msg("\treadlink() error\n");
perror("readlink() error");
} else
log_msg("readlink() returned '%s' for '%s'\n", buf, tempFD);
这是FUSE文件系统的一部分。该结构称为fi,文件描述符存储在类型为uint64_t的fh中。由于这个程序执行的方式,我知道两个链接文件的文件描述符号码总是相隔1。至少这是我的工作假设,我试图用此代码验证。
这编译,但是当我运行它时,我的日志文件每次都显示一个readlink错误。我的文件描述符有正确的整数值存储在它们中,但它不起作用。
有谁知道如何从这些整数值中获取文件名?谢谢!