在linux中每个被打开的文件都会在/proc/self/fd/目录中有记录,其中(/proc/self/fd/文件描述符号;这个文件是符号文件)的文件就是文件描述符所对应的文件。
而readlink可以取得符号连接所指的文件
函数原型:

ssize_t readlink(const char *path, char *buf, size_t bufsiz);

函数说明:

readlink()会将参数path的符号连接内容存到参数buf所指的内存空间,返回的内容不是以NULL作字符串结尾,但会将字符串的字符数返回。若参数bufsiz小于符号连接的内容长度,过长的内容会被截断。返回值 执行成功则传符号连接所指的文件路径字符串,失败则返回-1,错误代码存于errno。错误代码
EACCESS 取文件时被拒绝,权限不够
EINVAL 参数bufsiz 为负数
EIO I/O 存取错误。
ELOOP 欲打开的文件有过多符号连接问题。
ENAMETOOLONG 参数path的路径名称太长
ENOENT 参数path所指定的文件不存在
ENOMEM 核心内存不足
ENOTDIR 参数path路径中的目录存在但却非真正的目录。

通过文件描述符获取文件名源码:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>const char *FILE_NAME = "a.txt";int main(){int fd;if((fd = open(FILE_NAME, O_RDONLY)) == -1){fprintf(stderr,"%s open :%s\n",FLOW_RX_FILE, strerror(errno));return -1;}char buf[1024] = {'\0'};char file_path[1024] = {'\0'};snprintf(buf,sizeof(buf), "/proc/self/fd/%d", fd);readlink(buf,file_path,sizeof(file_path)-1);printf("%s\n",file_path);return 0;
}

linux c 文件描述符 得到 文件名相关推荐

  1. linux 文件指针,Linux中文件描述符fd与文件指针FILE*互相转换实例解析

    本文研究的主要是Linux中文件描述符fd与文件指针FILE*互相转换的相关内容,具体介绍如下. 1.文件描述符fd的定义:文件描述符在形式上是一个非负整数.实际上,它是一个索引值,指向内核为每一个进 ...

  2. Linux下文件描述符

    Linux下文件描述符 标签: linuxfilelinux内核apacheunixsocket 2012-08-17 15:45 5798人阅读 评论(0) 收藏 举报 分类: 调优和安全(5) 版 ...

  3. linux下文件描述符的介绍

    linux下文件描述符的介绍 (2012-10-02 16:01:56) 转载▼ 标签: 描述符 调用 返回 进程 限制 it 分类:linux 当某个程序打开文件时,操作系统返回相应的文件描述符,程 ...

  4. 深入理解Linux/Unix文件描述符和epoll

    Linux/Unix 文件描述符(File Describer)的本质 Linux/Unix(以下简称Linux)系统中,每个进程都有一个专用的数组,数组的元素是一个结构体,称为文件描述符File D ...

  5. linux用户文件描述符2表示,Linux下文件描述符

    Linux下文件描述符 文件描述符是一个简单的整数,用以标明每一个被进程所打开的文件和socket.第一个打开的文件是0,第二个是1,依此类推.Unix操作系 统通常给每个进程能打开的文件数量强加一个 ...

  6. ftpclient读取服务器文件能获得文件名文件大小0_理解Linux的文件描述符FD与Inode

    FD 文件描述符 一.概念 Linux 系统中,把一切都看做是文件,当进程打开现有文件或创建新文件时,内核向进程返回一个文件描述符,文件描述符就是内核为了高效管理已被打开的文件所创建的索引,用来指向被 ...

  7. linux中文件描述符fd和文件指针flip的理解

    整理自:http://www.cnblogs.com/Jezze/archive/2011/12/23/2299861.html 简单归纳:fd(file descriptor)只是一个整数,在ope ...

  8. Linux中文件描述符1,linux内核中的文件描述符(一)--基础知识简介

    原标题:linux内核中的文件描述符(一)--基础知识简介 Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123(http://blo ...

  9. linux存储--文件描述符fd与FILE结构体(二)

    文件描述符fd 对于linux而言,所有对设备(对于linux而言,一切皆文件)和文件的操作都使用文件描述符来进行的. 文件描述符是一个非负的整数,它是一个索引值,指向内核中每个进程打开文件的记录表. ...

最新文章

  1. 计算机软件可以一次摊销吗,研发用无形资产可以一次摊销吗
  2. 机器视觉中如何选择工业相机与合适的相机镜头
  3. 教你如何将UIImageView视图中的图片变成圆角
  4. WPF LibraryBar去背景色
  5. java set的first_Java TreeSet pollFirst()方法与示例
  6. github 和git_学习编码时如何学习Git和GitHub
  7. 【Matlab】离散点拟合曲面
  8. mac 蓝牙 串口调试 助手(工具)
  9. VSCode配置cpp环境
  10. 广州大学锐捷认证协议安全性研究
  11. 数学连乘和累加运算符号_数学所有的公式和符号
  12. linux使用grep查找文件内容,linux如何使用grep命令查找文件内容
  13. 走楼梯c语言程序,动态规划走楼梯
  14. 高中免费套卷博客_博客卷
  15. Quartz配置上次任务没有执行完,下次任务推迟执行
  16. 服务器芯片市场国产,飞腾发布国产腾云 S2500服务器芯片 2020中国服务器行业市场全景调研...
  17. R语言并行计算spearman相关系数
  18. 多示例学习距离度量 (distance measures)和集合核 (set-kernel)
  19. [杂言] GoodBye,2016
  20. 微信直播的应用场景有哪些

热门文章

  1. Exchange2003 OWA 将HTTPS转为HTTP访问!〖罗斌个人工作经验谈〗
  2. RESTful_基础知识
  3. 安卓蓝牙调试软件和微信小程序搜索不到设备
  4. Amazon Aurora是如何设计原生云关系型数据库的?
  5. asp.net core选项配置的研究
  6. 模型评估方法和性能指标
  7. 对象不支持“abigimage”属性或方法
  8. 开发路上踩过的坑要一个个填起来————持续更新······(7月30日)
  9. Activiti工作流实战-2
  10. 什么是GREENPLUM