1. #include <stdio.h>
  2. #include <sys/utsname.h> //uname
  3.  
  4. int main(int argc, char **argv[])
  5. {
  6. struct utsname u;
  7. if (uname(&u) != -1) {
  8. printf("获取当前内核的名称和信息例如以下\n"
  9. "sysname:%s\n"
  10. "nodename:%s\n"
  11. "release:%s\n"
  12. "version:%s\n"
  13. "machine:%s\n"
  14. , u.sysname, u.nodename, u.release, u.version, u.machine);
  15. }
  16.  
  17. return 0;
  18. }

输出例如以下:

  1. 获取当前内核的名称和信息例如以下
  2. sysname:Linux
  3. nodename:fes
  4. release:2.6.32-220.el6.x86_64
  5. version:#1 SMP Wed Nov 9 08:03:13 EST 2011
  6. machine:x86_64

size_t confstr(int name, char *buf, size_t len);

confstr函数获取依赖配置的字符串变量的值

1、_CS_GNU_LIBC_VERSION,the GNU C library version on this system

2、_CS_GNU_LIBPTHREAD_VERSION,the POSIX implementation supplied by this C library

3、_CS_PATH,A value for the PATH variable which indicates where all the POSIX.2 standard utilities can be found.

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h> //confstr
  4.  
  5. int main(int argc, char **argv[])
  6. {
  7. char *pathbuf, *gun_libpthread_version_buf, *gun_libc_version_buf;
  8. size_t n;
  9.  
  10. n = confstr(_CS_PATH,NULL,(size_t) 0);
  11. pathbuf = malloc(n);
  12. if (pathbuf == NULL)
  13. abort();
  14. confstr(_CS_PATH, pathbuf, n);
  15. printf("_CS_PATH, A value for the PATH variable:%s\n", pathbuf);
  16. free(pathbuf);
  17. pathbuf = NULL;
  18.  
  19. n = confstr(_CS_GNU_LIBPTHREAD_VERSION,NULL,(size_t) 0);
  20. if (n > 0) {
  21. gun_libpthread_version_buf = malloc(n);
  22. }
  23. if (gun_libpthread_version_buf == NULL)
  24. abort();
  25. confstr(_CS_GNU_LIBPTHREAD_VERSION, gun_libpthread_version_buf, n);
  26. printf("_CS_GNU_LIBPTHREAD_VERSION, the POSIX implementation supplied by this C library:%s\n", gun_libpthread_version_buf);
  27. free(gun_libpthread_version_buf);
  28. gun_libpthread_version_buf = NULL;
  29.  
  30. n = confstr(_CS_GNU_LIBC_VERSION,NULL,(size_t) 0);
  31. if (n > 0) {
  32. gun_libc_version_buf = malloc(n);
  33. }
  34. if (gun_libc_version_buf == NULL)
  35. abort();
  36. confstr(_CS_GNU_LIBC_VERSION, gun_libc_version_buf, n);
  37. printf("_CS_GNU_LIBC_VERSION, the GNU C library version on this system: %s\n" \
  38. , gun_libc_version_buf);
  39. free(gun_libc_version_buf);
  40. gun_libc_version_buf = NULL;
  41.  
  42. return 0;
  43. }

输出结果例如以下:

  1. _CS_PATH, A value for the PATH variable:/bin:/usr/bin
  2. _CS_GNU_LIBPTHREAD_VERSION, the POSIX implementation supplied by this C library:NPTL 2.12
  3. _CS_GNU_LIBC_VERSION, the GNU C library version on this system: glibc 2.12

linux下confstr与uname函数_获取C库与内核信息的更多相关文章

  1. Linux下精确控制时间的函数

    Linux下精确控制时间的函数 在测试程序接口运行时间的时候,常用time,gettimeofday等函数,但是这些函数在程序执行的时候是耗费时间的,如果仅仅测试时间还行,但是如果程序中用到时间控制类 ...

  2. linux下时间有关的函数和结构体

    1.时间类型.Linux下常用的时间类型有6个:time_t,struct timeb, struct timeval,struct timespec,clock_t, struct tm. (1) ...

  3. Linux Linux下特殊的printf函数和fputs函数

    Linux下,printf函数必须以'\n'结尾才会立刻输出到屏幕,如果没有'\n'直到输出缓冲区满了以后才会打印到屏幕上(敲击换行也算),如果需要不换行的输出,一般可以使用write函数代替.'\n ...

  4. windows和linux下的本机IP的获取(亲测有效)

    package com.handsight.platform.fras.util; import org.apache.log4j.Logger; import javax.servlet.http. ...

  5. (转)linux下execl和system函数

    linux下,system函数和execl函数都是用于执行一条系统命令.今天仔细看了system函数的实现,想找出和execl函数的差别. 这里先进行一些背景知识补充: fork(创建一个新的进程): ...

  6. linux下c程序的链接、装载和库(1)

    读完<程序员的自我修养--链接.装载和库>相关章节,想来总结一下,若有错误,请指正,多谢. 1. 什么叫目标文件? 你的工程里有很多xxx.c这样的源文件,这些文件是文本文件,只有人能够认 ...

  7. linux下gcc默认搜索的头文件及库文件路径

    转自:https://blog.csdn.net/fd315063004/article/details/7925854 一.头文件 gcc 在编译时如何去寻找所需要的头文件:※所以header fi ...

  8. Linux下经常使用的C/C++开源Socket库

    1.      Linux Socket Programming In C++ : http://tldp.org/LDP/LG/issue74/tougher.html 2.      ACE: h ...

  9. Linux下经常使用的C/C++开源Socket库【转】

    转自:https://www.cnblogs.com/gccbuaa/p/7015599.html 1.      Linux Socket Programming In C++ : http://t ...

随机推荐

  1. DELPHI 参数前缀的使用

    传值参数传值参数可在过程内部修改,但过程返回时该修改不会反映出来.不加任何前缀,就表示该参数为传值参数.Procedure Foo( I : Integer );I 的值被传递到Foo 过程.当Foo ...

  2. MySQL数据库增删改字段(属性)

    MySQL数据库的各种操作今天在这里总结一下: 一.增加 1.在已有的表中添加新的字段: 首先是增加表的字段,比如一张表原本没有字段“ Time ”,现在我们要增加这样一个字段,可以用下面的SQL语句 ...

  3. Apache Kafka 企业级消息队列

    1.大纲 了解 Apache Kafka是什么 掌握Apache Kafka的基本架构 搭建Kafka集群 掌握操作集群的两种方式 了解Apache Kafka高级部分的内容 2.消息系统的作用是什么 ...

  4. Dfs【p1454】 圣诞夜的极光

    题目描述-->p1454 圣诞夜的极光 题意概括: 寻找联通块数量,这里的连通块定义与其他的不同. 这里定义为曼哈顿距离不超过2的都属于一个联通块. 什么?不知道曼哈顿距离是啥? 曼哈顿距离简易 ...

  5. ansible管理window

    设置window以支持远程执行命令======================================= 升级powershell到3.0+-------------------------- ...

  6. luogu P1802 5倍经验日

    题目背景 现在乐斗有活动了!每打一个人可以获得5倍经验!absi2011却无奈的看着那一些比他等级高的好友,想着能否把他们干掉.干掉能拿不少经验的. 题目描述 现在absi2011拿出了x个迷你装药物 ...

  7. [Luogu P4198]楼房重建(线段树)

    题目描述 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子. 为了简化问题,我们考虑这些事件发生在一个 ...

  8. 【计算几何】URAL - 2101 - Knight's Shield

    Little Peter Ivanov likes to play knights. Or musketeers. Or samurai. It depends on his mood. For pa ...

  9. 记一次深刻的教训-----将mat数据转化为SequenceFile

    深刻的体会就是,“java.lang.NullPointer.Exception”就是空指针异常可能是由于数组部分元素未被初始化引起的. 1)使用jmatio将mat数据转化为SequenceFile ...

  10. maven将jar文件加入到maven库

    mvn install:install-file-DgroupId=包名-DartifactId=项目名-Dversion=版本号-Dpackaging=jar-Dfile=jar文件所在路径 1,本 ...