侧边栏壁纸
博主头像
noerror

虚灵不寐,众理具而万事出。

  • 累计撰写 239 篇文章
  • 累计创建 9 个标签
  • 累计收到 2 条评论
标签搜索

目 录CONTENT

文章目录

confstr函数用法详解

noerror
2022-10-14 / 0 评论 / 0 点赞 / 149 阅读 / 530 字 / 正在检测是否收录...

confstr函数用法详解

confstr函数简介

  • 头文件包含
#include <unistd.h>
  • 函数定义
size_t confstr(int  name , char * buf , size_t  len );

confstr函数常见使用错误

  • 编译错误
    warning: implicit declaration of function ‘confstr’ [-Wimplicit-function-declaration]
    解决办法:包含头文件
#include <unistd.h>

confstr函数详细描述

confstr ()获取与配置相关的字符串变量的值。
name参数是要查询的系统变量。支持以下变量:

  • _CS_GNU_LIBC_VERSION " (GNU C library only; since glibc 232)"一个字符串,它标识这个系统上的GNU C库版本(例如,“glibc 2.3.4”)。
  • _CS_GNU_LIBPTHREAD_VERSION " (GNU C library only; since glibc 232)"一个字符串,标识这个C库提供的POSIX实现(例如,“NPTL 2.3.4”或“LinuxThreads-0.10”)。
  • _CS_PATH 一个 PATH 变量的值,它指示可以找到所有POSIX.2标准实用程序的位置。

如果buf不为NULL,len不为零,confstr ()将字符串的值复制到buf,必要时截断为len - 1字节,并使用一个NULL字节((aq\e0(aq)作为终止符。通过比较confstr ()和len 的返回值可以检测到这一点
如果len为零,buf为空,则confstr ()只返回下面定义的值。

confstr函数返回值

如果name是一个有效的配置变量,则confstr ()返回保存该变量的整个值所需的字节数(包括终止的空字节)。该值可能大于len ,这意味着buf中的值被截断。
如果name是一个有效的配置变量,但该变量没有值,则confstr ()返回0。如果name与有效的配置变量不对应,则confstr ()返回0,errno设置为EINVAL

confstr函数错误码

  • EINVAL name的值无效。

confstr函数使用举例

下面的代码片段确定了查找POSIX.2系统实用程序的路径:

char *pathbuf;
size_t n;

n = confstr(_CS_PATH, NULL, (size_t) 0);
pathbuf = malloc(n);
if (pathbuf == NULL)
   abort();
confstr(_CS_PATH, pathbuf, n);
0

评论区