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);
评论区