sysctl方式获得unix系统的release版本号。因为sysctl的release版本号是不能被更改的,所以通过这种方式获得的信息具有确定性。
#include <stdio.h>
#include <sys/types.h>
#include <sys/sysctl.h>
#include <errno.h>
#include <stdlib.h>
int main()
{
char *releasename = NULL;
size_t len;
int mib[2];
mib[0] = CTL_KERN;
mib[1] = KERN_OSRELEASE;
if (0 != sysctl(mib, 2, NULL, &len, NULL, 0)){
printf("errno is %d/n",errno);
}
releasename = (char *)malloc(len);
if (NULL == releasename){
printf("errno is %d/n",errno);
}
if (0 != sysctl(mib,2,releasename,&len,NULL,0)){
printf("error is %d/n",errno);
}
printf("hw_model:%s/n",releasename);
if (NULL != releasename){
free(releasename);
releasename = NULL;
}
}