首页IT科技智慧树vb章节测试答案吉林医药学院(basic coder » linux下获取当前程序的绝对路径)

智慧树vb章节测试答案吉林医药学院(basic coder » linux下获取当前程序的绝对路径)

时间2025-07-29 01:39:37分类IT科技浏览4271
导读:linux下获取当前程序的绝对路径...

linux下获取当前程序的绝对路径

在linux下运行的程序经常需要获取自己的绝对路径             ,程序可能需要引用外部的资源文件                   ,比如在../skin/目录下的图片      ,这样普通程序是没有问题       ,但当程序在安装到/usr/bin/目录中                   ,或者为程序建立连接以后就会出现问题             ,我们可以直接通过运行程序的链接来运行程序       ,这样../skin/目录就找不到了                   ,因为当前目录并不是程序所在的目录             ,而且链接所在的目录,所以在它的上一级目录中根本找不到skin目录                   ,所以就需要获取程序的绝对路径                   ,用到了一个函数readlink,原型如下:

1 2 3 #include <unistd.h> ssize_t readlink(const char *restrict path , char *restrict buf , size_t bufsize);

该函数的作用是读取符号链接的原路径             ,将它存到buf中                   ,返回添充到buf中的字节数             。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <unistd.h> #include <stdio.h> int main(int argc , char* argv[]) { char buf[1024] = { 0 }; int n; n = readlink("/bin/mail" , buf , sizeof(buf)); if( n > 0 && n < sizeof(buf)) { printf("%s\n" , buf); } }

程序运行后输出:/usr/bin/mailx

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 #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); } }
1 2 ouclwp@darkstar:~/socket$ ./read /home/ouclwp/socket/read
声明:本站所有文章                   ,如无特殊说明或标注      ,均为本站原创发布                   。任何个人或组织       ,在未征得本站同意时                   ,禁止复制             、盗用                   、采集      、发布本站内容到任何网站       、书籍等各类媒体平台      。如若本站内容侵犯了原著者的合法权益             ,可联系我们进行处理       。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
linux鼠标变成x(linux 鼠标左右键互换实现代码) 爬山算法求解tsp问题(基于爬山算法求解TSP问题(JAVA))