linux下C语言根据文件描述符找到文件名
时间: 2023-07-26 07:12:27 浏览: 111
linux下C语言实现文件传输的简单实例详解.doc
在Linux下,可以使用`/proc`文件系统来获取文件描述符相关的信息,其中包括文件名。具体方式如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
int fd = open("/path/to/file", O_RDONLY);
if (fd == -1) {
perror("open");
return -1;
}
char link[1024];
snprintf(link, sizeof(link), "/proc/self/fd/%d", fd);
char filename[1024];
ssize_t len = readlink(link, filename, sizeof(filename));
if (len == -1) {
perror("readlink");
return -1;
}
filename[len] = '\0';
printf("File name: %s\n", filename);
close(fd);
return 0;
}
```
其中,`/proc/self/fd`目录下存放了进程打开的文件描述符,每个文件描述符对应一个符号链接文件,链接到真实的文件。因此,我们可以通过读取符号链接文件的内容来获取文件名。执行上述代码,可以获取到文件名并输出。
阅读全文