《UNIX环境高级编程》笔记23--系统标识-程序员宅基地

技术标签: 《unix环境高级编程二》  

POSIX.1定义了uname函数,它返回与当前主机和操作系统有关的信息。

[cpp]  view plain   copy
  1. #include <sys/utsname.h>  
  2. int uname(struct utsname *name);  //如果成功返回非负值,出错则返回-1.  
utsname结构体的定义如下:

[cpp]  view plain   copy
  1. struct  utsname{  
  2.     char sysname[];   //操作系统名称  
  3.     char nodename[];  //当前节点名称  
  4.     char release[]; //当前操作系统release  
  5.     char version[];  //当前release的版本  
  6.     char machine[];  //硬件类型名称  
  7. }  
实践:

[cpp]  view plain   copy
  1. #include <stdio.h>  
  2. #include <sys/utsname.h>  
  3.   
  4. int main(void){  
  5.         struct utsname name;  
  6.         if(uname(&name) == -1){  
  7.                 perror("uname");  
  8.                 return -1;  
  9.         }  
  10.         printf("%s,%s,%s,%s,%s\n",name.sysname,name.nodename,name.release,name.version,name.machine);  
  11.         return 0;  
  12. }  
运行结果:

Linux,yan-vm,3.5.0-17-generic,#28-Ubuntu SMP Tue Oct 9 19:32:08 UTC 2012,i686


历史上,BSD派生的系统提供了gethostname函数,它只返回主机名,该名字通常是TCP/IP网络上主机的名字。

[cpp]  view plain   copy
  1. #include <unistd.h>  
  2. int gethostname(char* name, int namelen); 成功返回0,出错返回-1.  
实践:

[cpp]  view plain   copy
  1. #include <stdio.h>  
  2. #include <unistd.h>  
  3.   
  4. int main(void){  
  5.         char name[100];  
  6.         if(gethostname(name,100) == -1){  
  7.                 perror("gethostname");  
  8.                 return -1;  
  9.         }  
  10.         name[99] = '\0';  
  11.         printf("%s\n",name);  
  12.         return 0;  
  13. }  
运行结果:

yan@yan-vm:~/apue$ ./a.out
yan-vm

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zjy900507/article/details/77869574

智能推荐

启动VMware虚拟机时出现黑屏解决办法_虚拟机开启后完全黑屏-程序员宅基地

文章浏览阅读1.4w次,点赞2次,收藏3次。以管理员身份运行“命令提示符”—> 输入命令:netsh winsock reset —> 运行后重启电脑 —> Enjoy it!上述命令作用:重置winsock网络规范_虚拟机开启后完全黑屏

Computer Architectrure: Quantitative Approch 第三章第十二节-程序员宅基地

文章浏览阅读186次。Putting It All Together: The Intel Core i7 6700and ARM Cortex-A53

android新增硬件模块,Ubuntu中为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序...-程序员宅基地

文章浏览阅读107次。在Ubuntu Android简单介绍硬件抽象层(HAL)一文中,我们简要介绍了在Android系统为为硬件编写驱动程序的方法。简单来说,硬件驱动程序一方面分布在Linux内核中,另一方面分布在用户空间的硬件抽象层中。接着Ubuntu Android系统上编写Linux内核驱动程序实现方法一文中举例子说明了如何在Linux内核编写驱动程序。在这一篇文章中,我们将继续介绍Android系统硬件驱动程..._安卓 hal 新硬件

python实现数据库连接池_python db 连接池-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏6次。以下python代码实现了一个简单的数据库连接池,以sqlite3为例class Pool(object): """一个数据库连接池""" def __init__(self, max_active=5, max_wait=None, init_size=0, db_type="SQLite3", **config): self.__freeConns = Qu..._python db 连接池

Web安全--点击劫持(ClickJacking)_点击劫持自动扫描-程序员宅基地

文章浏览阅读139次。点击劫持(ClickJacking)是一种视觉上的欺骗手段。大概有两种方式,一是攻击者使用一个透明的iframe,覆盖在一个网页上,然后诱使用户在该页面上进行操作,此时用户将在不知情的情况下点击透明的iframe页面;二是攻击者使用一张图片覆盖在网页,遮挡网页原有位置的含义;iframe覆盖直接示例说明1. 假如我们在百度有个贴吧,想偷偷让别人关注它。于是我们准备一个页面:&..._点击劫持自动扫描

Linux下编译出现“对‘sem_wait’未定义的引用”-程序员宅基地

文章浏览阅读561次。问题如下:解决办法:_对‘sem_wait’未定义的引用

随便推点

编译Android源码制作ROM,烧录。_http669733.com-程序员宅基地

文章浏览阅读1w次。简介Android源码编译后,在out/target/product/generic下生成的三个镜像文 件:ramdisk.img,system.img,userdata.img以及它们对应的目录树root,system,data。 ramdisk.img是根文件系统,system.img包括了主要的包、库等文件,userdata.img包括了一些用户数据,android加载 这3个映像文件后_http669733.com

java8 linq_Java8-lambda表达式-程序员宅基地

文章浏览阅读238次。拥抱函数式编程每有新技术出现(虽然Java8已经远远谈不上新了),伴随而来的总是新造的一堆词,但是新词往往可以恰当的表达新技术的特性,所以我们从学习概念,再研究lambda。概念命令式编程、声明式编程、函数式编程一.命令式编程的主要思想是关注计算机具体执行的步骤,即一步一步告诉计算机先做什么再做什么。例如Java等高级语言。二.声明式编程是以数据结构的形式来表达程序执行的逻辑。它的主要思想是告诉计..._java linq 和lambda

破解密码——利用粘滞键漏洞破解Windows 7 PIN_粘滞键替换pin-程序员宅基地

文章浏览阅读2.7k次,点赞4次,收藏7次。声明:本文章为学习用途,如因使用不当或恶意传播等自身行为而导致他人财产损失等危害的,作者本人Scienmicroit不负任何责任。案例:利用按5次Shift键启用粘滞键的漏洞破解Windows 7的PIN。(前提条件:该方法可能对部分计算机无效;该计算机无关于该漏洞的补丁;用户已设置并启用粘滞键连续按5次Shift键的快捷键。)步骤:1.开启计算机,设置你的Windows PIN(即Windows密码;最好将PIN设置复杂一些,原因是为了突出显示最后破解成功效果)。2.重新启动计算机,在开启计算机并_粘滞键替换pin

JS获取单元格所在行_js 过去当前元素在第几行-程序员宅基地

文章浏览阅读4.3k次。用JS获取表格中单击某个单元格中按钮,得到所在行的信息:functionGetRowNo(){vare=e||window.event;vartarget=e.target||e.srcElement;if(target.parentNode.tagName.toLowerCase()=="td"){_js 过去当前元素在第几行

小米mix2s主板电路图_mix2s短接图-程序员宅基地

文章浏览阅读2.2k次,点赞2次,收藏3次。小米mix2s主板电路图链接: https://pan.baidu.com/s/1TDrpB-PNkeizSs8CGYMC9Q 提取码: jqk6 复制这段内容后打开百度网盘手机App,操作更方便哦_mix2s短接图

Git服务器的搭建-程序员宅基地

文章浏览阅读1.5k次。以centos为例.参考自csdn1.首先安装Git(阿里云的centos系统可能已经自动安装好了Git),可以使用yum在线安装:yum install -y git2.创建一个git用户,专门用来运行git服务adduser git3.初始化git仓库:比如我们选择/home/git/learngit.git来作为我们的git仓库。git init --bare learngit.git这条命令