zoukankan      html  css  js  c++  java
  • linux下confstr与uname函数_获取C库与内核信息

    #include <stdio.h>
    #include <sys/utsname.h>	//uname
    
    int main(int argc, char **argv[])
    {
    	struct utsname  u;
    	if (uname(&u) != -1) {
    		printf("获取当前内核的名称和信息例如以下
    "
    			   "sysname:%s
    "
    			   "nodename:%s
    "
    			   "release:%s
    "
    			   "version:%s
    "
    			   "machine:%s
    "
    			   , u.sysname, u.nodename, u.release, u.version, u.machine);
    	}
    
    	return 0;
    }

    输出例如以下:

    获取当前内核的名称和信息例如以下
    sysname:Linux
    nodename:fes
    release:2.6.32-220.el6.x86_64
    version:#1 SMP Wed Nov 9 08:03:13 EST 2011
    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.

    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>		//confstr
    
    int main(int argc, char **argv[])
    {
    	char *pathbuf, *gun_libpthread_version_buf, *gun_libc_version_buf;
    	size_t n;
    
    	n = confstr(_CS_PATH,NULL,(size_t) 0);
    	pathbuf = malloc(n);
    	if (pathbuf == NULL)
    		abort();
    	confstr(_CS_PATH, pathbuf, n);
    	printf("_CS_PATH, A value for the PATH variable:%s
    ", pathbuf);
    	free(pathbuf);
    	pathbuf = NULL;
    
    	n = confstr(_CS_GNU_LIBPTHREAD_VERSION,NULL,(size_t) 0);
    	if (n > 0) {
    		gun_libpthread_version_buf = malloc(n);
    	}
    	if (gun_libpthread_version_buf == NULL)
    		abort();
    	confstr(_CS_GNU_LIBPTHREAD_VERSION, gun_libpthread_version_buf, n);
    	printf("_CS_GNU_LIBPTHREAD_VERSION, the POSIX implementation supplied by this C library:%s
    ", gun_libpthread_version_buf);
    	free(gun_libpthread_version_buf);
    	gun_libpthread_version_buf = NULL;
    
    	n = confstr(_CS_GNU_LIBC_VERSION,NULL,(size_t) 0);
    	if (n > 0) {
    		gun_libc_version_buf = malloc(n);
    	}
    	if (gun_libc_version_buf == NULL)
    		abort();
    	confstr(_CS_GNU_LIBC_VERSION, gun_libc_version_buf, n);
    	printf("_CS_GNU_LIBC_VERSION, the GNU C library version on this system: %s
    " 
    			, gun_libc_version_buf);
    	free(gun_libc_version_buf);
    	gun_libc_version_buf = NULL;
    
    	return 0;
    }
    输出结果例如以下:

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


  • 相关阅读:
    机器学习入门:线性回归及梯度下降
    torch7入门(安装与使用)
    机器学习--详解人脸对齐算法SDM-LBF
    人脸对齐和应用
    如何使用Unity制作虚拟导览(一)
    fatal error C1083: Cannot open include file: 'qttreepropertybrowser.moc': No such file or directory
    在QTreeWidget中删除QTreeWidgetItem
    如何写一个简单的手写识别算法?
    面向对象编程的弊端是什么?
    神舟飞船上的计算机使用什么操作系统,为什么是自研发不是 Linux?
  • 原文地址:https://www.cnblogs.com/yfceshi/p/7262454.html
Copyright © 2011-2022 走看看