文档章节

Linux readlink函数详解

吃一堑消化不良
 吃一堑消化不良
发布于 2016/09/27 10:27
字数 308
阅读 37
收藏 0

表头文件: #include <unistd.h>
定义函数:int  readlink(const  char *path,  char *buf, size_t  bufsiz);
函数说明:readlink()会将参数path的符号连接内容到参数buf所指的内存空间,返回的内容不是以NULL作字符串结尾,但会将字符串的字符数返回。若参数bufsiz小于符号连接的内容长度,过长的内容会被截断

返回值   :执行成功则传符号连接所指的文件路径字符串,失败返回-1, 错误代码存于errno
错误代码:
               EACCESS                  取文件时被拒绝,权限不够
               EINVAL                    参数bufsiz为负数
               EIO                         O存取错误
               ELOOP                     欲打开的文件有过多符号连接问题
               ENAMETOOLONG       参数path的路径名称太长
               ENOENT                   参数path所指定的文件不存在
               ENOMEM                   核心内存不足
               ENOTDIR                   参数path路径中的目录存在但却非真正的目录

#include <stdio.h>
#include <unistd.h>
char * get_exe_path( char * buf, int count)
{
    int i;
    int rslt = readlink("/proc/self/exe", buf, count - 1);
    if (rslt < 0 || (rslt >= count - 1))
    {
        return NULL;
    }
    buf[rslt] = '\0';
    for (i = rslt; i >= 0; i--)
    {
        printf("buf[%d] %c\n", i, buf[i]);
        if (buf[i] == '/')
        {
            buf[i + 1] = '\0';
            break;
        }
    }
    return buf;
}

int main(int argc, char ** argv)
{
    char path[1024];
    printf("%s\n", get_exe_path(path, 1024));
    return 0;
}

 

本文转载自:http://blog.csdn.net/feixue0000/article/details/14167333

吃一堑消化不良
粉丝 28
博文 188
码字总数 112947
作品 0
浦东
程序员
私信 提问
pthread_create、readlink、getpid等函数的学习与总结

pthread_create是UNIX环境创建线程函数 具体格式: #include int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict attr,void*(*start_rtn)(void*),void *restrict......

长平狐
2013/01/06
182
0
Linux Namespace : UTS

UTS namespace 用来隔离系统的 hostname 以及 NIS domain name。UTS 据称是 UNIX Time-sharing System 的缩写。 hostname 与 NIS domain name hostname 是用来标识一台主机的,比如登录时的提...

sparkdev
2018/07/30
0
0
[2014.3.23]cse::lab2::partD 简明攻略

这一部分要求增加两个新的接口 所以从上到下都得改一些东西 1. 找到extent_protocol.h中的enum types,增加软连接文件类型。 2. yfsclient.h和yfsclient.cc里面增加两个方法:symlink和readl...

apachecn_飞龙
2014/05/16
0
0
调试工具快速诊断软件的”疑难杂症

linux的strace命令(详解) 本文详细讲述linux下的strace命令的用法。 strace 命令是一种强大的工具,它能够显示所有由用户空间程序发出的系统调用。 strace 显示这些调用的参数并返回符号形式...

brucema
2011/11/28
0
0
从两个方面来阐述下linux为什么不允许创建文件夹的硬链接

使用方面考虑,会产生递归黑洞,举例: 文件夹 a,b,在a下面创建b文件夹得硬链接c,在b下面创建a文件夹的硬链接d, ls a ,会看到c,ls c,看到b下的文件夹d,再ls d又看到c,这样可以无限l...

问题终结者
2018/07/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

REST接口

文章来源 https://zhuanlan.zhihu.com/p/28674721?group_id=886181549958119424 http://www.ruanyifeng.com/blog/2014/05/restful_api.html REST 对请求的约定 REST 用来规范应用如何在 HTTP......

Airship
昨天
1
0
Spring Cloud Config 统一配置中心

Spring Cloud Config 统一配置中心 一、统一配置中心 统一管理配置 通常,我们会使用配置文件来管理应用的配置。如一个 Spring Boot 的应用,可以将配置信息放在 application.yml 文件中,如...

非摩尔根
昨天
1
0
android ------ AAPT2 error: check logs for details解决方法

AAPT 是全称是 Android Asset Packaging Tool,它是构建 App,甚至是构建 Android 系统都必不可少的一个工具。它的作用是将所有资源文件压缩打包到Android APK 当中。我们在 Android SDK 目录...

切切歆语
昨天
2
0
今天的学习

今天学到了<select></select>标签: <label for="unittype">Select unit type: </label><select id="unittype" name="unittype" autofocus > <option value="1"> Miner </option> ......

墨冥
昨天
2
0
程序员随想-关于分享

最早的时候,文字是贵族这些上层人士才会学习的,底层人士没有资格和渠道去学习,同样用文字、图像等其他载体承载的知识大部分也只有贵族阶层才能享受的。后来有了造纸术、印刷术,成本降低,...

Lubby
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部