相关函数: stat, lstat, symlink
表头文件: #include <unistd.h>
定义函数:ssize_t readlink(const char *path, char *buf, size_t bufsiz);
函数说明:readlink()会将参数path的符号链接内容存储到参数buf所指的内存空间,返回的内容不是以\000作字符串结尾,但会将字符串的字符数返回,这使得添加\000变得简单。若参数bufsiz小于符号连接的内容长度,过长的内容会被截断,如果 readlink 第一个参数指向一个文件而不是符号链接时,readlink 设 置errno 为 EINVAL 并返回 -1。 readlink()函数组合了open()、read()和close()的所有操作。
返回值 :执行成功则返回字符串的字符数,失败返回-1, 错误代码存于errno
执行成功则返回ssize_t
错误代码:
EACCESS 取文件时被拒绝,权限不够
EINVAL 参数bufsiz为负数
EIO O存取错误
ELOOP 欲打开的文件有过多符号连接问题
ENAMETOOLONG 参数path的路径名称太长
ENOENT 参数path所指定的文件不存在
ENOMEM 核心内存不足
ENOTDIR 参数path路径中的目录存在但却非真正的目录

linux系统中有个符号链接:/proc/self/exe 它代表当前程序,所以可以用readlink读取它的源路径就可以获取当前程序的绝对路径,如下:

#include <unistd.h>
#include <stdio.h>int main(int argc , char* argv[])
{char buf[1024] = { 0 };int n;n = readlink("/proc/self/exe" , buf , sizeof(buf));if( n > 0 && n < sizeof(buf)){printf("%s\n" , buf);}
}

readlink(/proc/self/exe, buf, count - 1);相关推荐

  1. 取当前进程对应之静态映像文件的绝对路径/proc/self/exe

    提供一个linux  advanced programming 上的得到绝对路径目录的函数: char* get_self_executable_directory () {   int rval; ...

  2. docker 异常:“fork/exec /proc/self/exe: no such file”

    docker 服务不正常 [root@controller03 ~]# docker exec -it keystone bash rpc error: code = 2 desc = oci run ...

  3. C/C++获取当前路径、获取任意pid完整路径(readlink()函数)

    #include <stdio.h> #include <unistd.h> char * get_exe_path( char * buf, int count) {int ...

  4. linux下readlink函数详解

    linux下readlink函数详解 相关函数: stat, lstat, symlink 表头文件: #include <unistd.h> 定义函数:int  readlink(con ...

  5. readlink 获取进程的绝对路径

    readlink可以获取exe所在的路径(直接和进程关联);无法获得so的路径,so路径可以用dladdr,参考另一篇文章linux系统中有个符号链接:/proc/self/exe 它代表当前程序,所 ...

  6. readlink 读取当前路径 linux

    使用readlink读取当前程序执行路径 linux中 符号链接 /proc/self/exe 为当前执行路径的值 #include"unistd.h" #include" ...

  7. linux c 获取绝对路径各种方法分析

    昨天肚腩群里有人问LINUX下C如何获取程序绝对路径.初看这问题,肚腩觉得很简单啊,就用getcwd或者argv[0]就可以了.写了个程序试试, #include <unistd.h>in ...

  8. Linux中获取当前程序路径的方法

    1.命令行实现:转自:http://www.linuxdiyf.com/viewarticle.php?id=84177 #!/bin/sh cur_dir=$(pwd) echo $cur_dir ...

  9. muduo:获取进程相关信息

    muduo里面有专门获取进程信息的类,记录一下. // Use of this source code is governed by a BSD-style license // that can b ...

最新文章

  1. 如何做好一场技术演讲-总结:3、如何把你的观点深深地刻在别人的脑海中?
  2. java 自动装箱自动拆箱_自动装箱和自动拆箱
  3. 传说中的WCF(5):数据协定(a)
  4. 链家全解剖:必须佩服、也必须警惕的巨无霸
  5. Test live writer
  6. 前端学习(2081):三种方案对比es5没有闭包
  7. 【转】Mongodb 学习笔记
  8. 11.2 正睿停课训练 Day15
  9. 【转】格雷斯特(Glest)Glest(开源RTS游戏)编译备忘
  10. 2017/08/07 工作日志
  11. 计算机硬故障指什么原因是,计算机常见硬故障的诊断及排除(7页)-原创力文档...
  12. 基于cnn的人脸识别_人脸识别技术:从传统方法到深度学习
  13. word2016 尾注后加致谢
  14. python dos攻击_Python DOS预防十亿笑声攻击
  15. 生也有涯而知也无涯,以有涯应无涯,殆矣
  16. 主成分回归之后预测_主成分回归解析.ppt
  17. python print时清除上一行_python3,如何用print清除行覆盖?
  18. angular五大服务顺序_深圳市考公务员报名时间2021_深圳市人事考试考生服务系统_深圳公务员考试网_深圳市考试院...
  19. 【对讲机的那点事】手把手教你安装 MOTOTRBO 驱动程序
  20. 互联网大厂薪资最全揭秘:京东

热门文章

  1. MQTT协议笔记之mqtt.io项目TCP协议支持
  2. 福昕阅读器drm加密解密总结
  3. iOS开发笔记[16/50]:Views
  4. 几个支持生成Python代码的UML工具
  5. CodeForces - 560E Gerald and Giant Chess(组合数学+dp)
  6. HDU - 2819 Swap(二分图完备匹配+路径输出)
  7. qt如何讲自己定义的label放到mainwindow中_如何更改SAS变量格式?
  8. UVA12113 Overlapping Squares重叠的正方形 暴力破解
  9. 机器学习-分类之AdaBoost原理及实战
  10. 数据分析与挖掘-python常用数据探索函数