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