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


  • 相关阅读:
    Kubernetes 集成研发笔记
    Rust 1.44.0 发布
    Rust 1.43.0 发布
    PAT 甲级 1108 Finding Average (20分)
    PAT 甲级 1107 Social Clusters (30分)(并查集)
    PAT 甲级 1106 Lowest Price in Supply Chain (25分) (bfs)
    PAT 甲级 1105 Spiral Matrix (25分)(螺旋矩阵,简单模拟)
    PAT 甲级 1104 Sum of Number Segments (20分)(有坑,int *int 可能会溢出)
    java 多线程 26 : 线程池
    OpenCV_Python —— (4)形态学操作
  • 原文地址:https://www.cnblogs.com/yfceshi/p/7262454.html
Copyright © 2011-2022 走看看