首页 > 编程知识 正文

ioctl函数详解,linux中select函数

时间:2023-05-04 18:33:18 阅读:23849 作者:2491

linux上的readlink函数详细相关函数: stat、lstat、symlink

头文件: #include unistd.h

定义函数: intreadlink(constchar*path,char *buf,size_tbufsiz );

函数说明: readlink ) )将参数path的符号连接内容返回到参数buf指向的内存空间。 返回的内容不是以NULL结尾,而是返回字符串的字符数。 如果参数bufsiz小于符号链接的内容长度,过长的内容将被截断

返回值:如果成功,则传递符号链接指向的文件路径字符串。 失败时返回-1,错误代码保存在errno中

错误代码:

EACCESS在获取文件时被拒绝,权限不足

EINVAL参数bufsiz是负数

EIO访问错误

ELOOP尝试打开的文件中存在太多符号连接问题

名称too long参数path的路径名太长

由ENOENT参数path指定的文件不存在

ENOMEM核心内存不足

ENOTDIR参数路径中的目录存在,但不是实际目录

一例:

#include stdio.h

#include unistd.h

#define PATH_MAX 1024

char * get_exe_path (

{

静态char buf [ path _ max ];

int i;

int rslt=readlink (/proc/self/exe )、buf、PATH_MAX );

if(rslt0|||rslt=path_max ) )

{

返回空值;

}

buf[rslt]=' ';

for(I=RSLT; i=0; I----)

{

printf(buf[%d]%c(n ),I,buf[i] );

if(buf[I]=='/' )

{

buf[i 1]=' ';

布雷克;

}

}

返回缓冲区;

}

(intmain(intargc,char ** argv ) ) ) ) ) ) ) )。

{

printf('%sn ',get_exe_path );

返回0;

}

例2(: )我个人觉得这个程序很合理。 推荐。

#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 (rslt0||(rslt=计数-1) )

{

返回空值;

}

buf[rslt]=' ';

for(I=RSLT; i=0; I----)

{

printf(buf[%d]%c(n ),I,buf[i] );

if(buf[I]=='/' )

{

buf[i 1]=' ';

布雷克;

}

}

返回缓冲区;

}

(intmain(intargc,char ** argv ) ) ) ) ) ) ) )。

{

char path[1024];

printf('%sn ',get_exe_path ) path,1024 );

返回0;

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。