最近在做一个小程序,需要用到在linux系统里编写C程序从而获取MAC地址,从网上搜了一遍,想总结一下。如果你就只需要单个功能的程序,可以采用方法一,见代码1,一般最好能够封装起来,写成获取MAC地址的函数再调用,可以采用方法二,见代码2。

代码1:

#include

#include

#include

#include

#include

#include

int main(int argc, char *argv[])

{

struct ifreq ifreq;

int sock;

if(argc!=)

{

printf("Usage : ethname\n");

return ;

}

if((sock=socket(AF_INET,SOCK_STREAM,))

{

perror("socket");

return ;

}

strcpy(ifreq.ifr_name,argv[]);

if(ioctl(sock,SIOCGIFHWADDR,&ifreq)

{

perror("ioctl");

return ;

}

printf("%02x:%02x:%02x:%02x:%02x:%02x\n",

(unsigned char)ifreq.ifr_hwaddr.sa_data[],

(unsigned char)ifreq.ifr_hwaddr.sa_data[],

(unsigned char)ifreq.ifr_hwaddr.sa_data[],

(unsigned char)ifreq.ifr_hwaddr.sa_data[],

(unsigned char)ifreq.ifr_hwaddr.sa_data[],

(unsigned char)ifreq.ifr_hwaddr.sa_data[]);

return ;

}

将代码写入一个C文件,名称随便取,姑且存为MAC_addr.c。

在linux下运行:gcc -o  MAC_addr MAC_addr.c

下一条指令要十分注意,这个函数是带参数才能执行的,可以用以下指令:

./MAC_addr  etho 即可获得MAC地址。

想用封装的形式,写成一个求MAC地址的函数,然后再调用此函数,可以用方法二,见代码2。

代码2:

#include

#include

#include

#include

#include

#include

#include //for struct ifreq

int get_mac(char * mac, int len_limit) //返回值是实际写入char * mac的字符个数(不包括'\0')

{

struct ifreq ifreq;

int sock;

if ((sock = socket (AF_INET, SOCK_STREAM, )) < )

{

perror ("socket");

return -;

}

strcpy (ifreq.ifr_name, "eth0"); //Currently, only get eth0

if (ioctl (sock, SIOCGIFHWADDR, &ifreq) < )

{

perror ("ioctl");

return -;

}

return snprintf (mac, len_limit, "%X:%X:%X:%X:%X:%X", (unsigned char) ifreq.ifr_hwaddr.sa_data[], (unsigned char) ifreq.ifr_hwaddr.sa_data[], (unsigned char) ifreq.ifr_hwaddr.sa_data[], (unsigned char) ifreq.ifr_hwaddr.sa_data[], (unsigned char) ifreq.ifr_hwaddr.sa_data[], (unsigned char) ifreq.ifr_hwaddr.sa_data[]);

}

int main()

{

char szMac[];

int nRtn = get_mac(szMac, sizeof(szMac));

if(nRtn > )

{

fprintf(stderr, "MAC ADDR: %s\n", szMac);

}

return ;

}

将代码写入一个C文件,姑且存为MAC_addr.c。

在linux下运行:gcc -o  MAC_addr MAC_addr.c

./MAC_addr  即可获得MAC地址。

亲测以上方法都是通过的,欢迎讨论是否还有更好的方法!

获得Unix&sol;Linux系统中的IP、MAC地址等信息

获得Unix/Linux系统中的IP.MAC地址等信息 中高级  |  2010-07-13 16:03  |  分类:①C语言. Unix/Linux. 网络编程 ②手册  |  4,471 次阅读 ...

linux系统下获取IP,MAC,子网掩码,网关

获取IP和子网掩码 int getLocalInfo(char IP[],char Mask[]) { int fd; int interfaceNum = 0; struct ifreq buf[1 ...

Linux系统下如何设置IP地址?

Linux系统下如何设置IP地址?我们可以通过命令设定IP的方法,不过此方法的前提条件是用户需root权限.在linux系统的 /etc/sysconfig/network-script/ifcfg- ...

Linux 获取本机IP、MAC地址用法大全

getifaddrs()和struct ifaddrs的使用,获取本机IP ifaddrs结构体定义如下: struct ifaddrs { struct ifaddrs *ifa_next; /* ...

Linux系统下DHCP服务安装部署和使用详解

一.概述 DHCP :动态主机设置协议(英语:Dynamic Host Configuration Protocol,DHCP)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:用于内部网或 ...

【转载】Linux系统下命令行连接蓝牙设备 查看查找 蓝牙

Linux系统下命令行连接蓝牙设备 2018年11月26日 10:47:27 Zz笑对一切 阅读数:741   1.打开系统蓝牙 sudo service bluetooth start 1 进入bl ...

在Linux系统下运行微信Web开发者工具

微信Web开发者工具只有window版本和mac版本,如果想要在Linux系统下运行微信Web开发者工具,需要花费很大周折. 注:带 * 的步骤或文件为不确定是否管用的步骤或文件.本人系统为Linux ...

linux系统下的权限知识梳理

下面对linux系统下的有关权限操作命令进行了梳理总结,并配合简单实例进行说明.linux中除了常见的读(r).写(w).执行(x)权限以外,还有其他的一些特殊或隐藏权限,熟练掌握这些权限知识的使用, ...

linux系统下修改文件夹目录权限

linux系统下修改文件夹目录权限 文件夹权限问题 Linux.Fedora.Ubuntu修改文件.文件夹权限的方法差不多.很多人开始接触Linux时都很头痛Linux的文件权限问题.这里告诉大家如何 ...

随机推荐

sessionStorage 和 localStorage 、cookie

sessionStorage 和 localStorage html5中web storage包括两种储存方式:sessionStorage 和 localStorage sessionStorage ...

Firefox使用svg blur滤镜渲染图片

很久没来更新博客了,今天正好比较闲,就写一篇手头项目上遇到的一个css问题: .mature .blur { -webkit-filter:blur(25px); -moz-filter:blur(2 ...

mysql性能优化-简易版

mysql性能优化 sql语句优化 如何发现有问题的sql? 开启mysql慢查询 show variables like 'slow_query_log' set global slow_query ...

CentOS 7下关于systemd的一些唠叨话一:systemd的特点和使用

摘要 近年来,Linux 系统的 init 进程经历了两次重大的演进,传统的 sysvinit 已经逐渐淡出历史舞台,新的 UpStart 和 systemd 各有特点,越来越多的 Linux 发行版 ...

MySql生日闰月处理

1. 科普下润年: ①.非整百年能被4整除的为闰年.(如2004年就是闰年,2100年不是闰年) ②.整百年能被400整除的是闰年.(如2000年是闰年,1900年不是闰年)   2. 例: 例如:当 ...

Java:IO流与IO设备

打印流:PrintWriter和PrintStream 特点:可以直接操作输入流和文件 //例子1:使用PrintStream将格式化的日期打印到文件中 import java.io.*; impor ...

git-daemon的快捷搭建

使用git-daemon进行git服务器搭建 1.安装git-daemon 前提是已经安装git sudo apt-get install git git-core 然后安装git-daemon su ...

ubuntu12&period;04下搭建ftpserver

楼主想把同学硬盘里面的200多G电影共享给实验室的小伙伴们看,就打算在内网server上搭建一个ftp的server. 1.安装ftp 首先在终端下键入例如以下内容,安装ftpserver: sudo ...

javascript 局部变量和全局变量

刚开始学js,遇到了一个奇怪的问题,查找之后知道了答案 需要记住两句话 1 Javascript的变量的scope是根据方法块来划分的(也就是说以function的一对大括号{ }来划分).切记,是f ...

js加强版图片轮播

linux c 获取mac地址吗,Linux系统下用C语言获取MAC地址相关推荐

  1. Linux系统下自动搜索USB摄像头地址及设备信息

    Linux系统下自动搜索USB摄像头地址及设备信息 在进行到多个USB摄像头开发时,会涉及到获取摄像头地址及设备信息问题. 一般USB摄像头的设备信息是固定的,我们基于设备信息,就可以在软件开发时进行 ...

  2. 计算机被篡改ip地址,windows7系统下局域网电脑被篡改IP地址如何解决

    局域网中很多用户都会喜欢共享一台打印机,但是有时候会遇到计算机ip被篡改的情况,导致无法正常使用网络打印机,那么要怎么办呢,接下来小编就给大家讲解一下windows7系统下局域网电脑被篡改IP地址的具 ...

  3. winin10怎么锁定计算机,win10系统下设置电脑固定ip地址的方法

    在win10系统中,有时候需要设置固定ip地址才可以让电脑上网,那么就可以在网络设置中来进行设置,但是仍有一部分win10系统用户不知道怎么设置电脑固定ip地址,那么该怎么操作呢,本文就给大家带来wi ...

  4. linux安卓usb网络,[原创]在多种系统下通过USB连接android手机上网

    基于三种系统:linux (for raspberry pi) windows 7 windows xp 首先,讲一下关于手机,从功能上分为两种: 第一:把手机当成无线网卡,手机连接了无线网络后,通过 ...

  5. linux temp文件夹在哪_Win10系统下使用linux命令的方法

    Win10系统是目前主流的操作系统之一,其功能十分强大,而在Windows10系统下也是能够使用linux命令,只是不少用户不知道而已.那么如何在Win10系统下使用linux命令?下面小编分享一下W ...

  6. linux为用户指定资源大小,Linux_Linux系统下生成一个指定大小的文件,在装系统,因此在这里随便记 - phpStudy...

    Linux系统下生成一个指定大小的文件 在装系统,因此在这里随便记点东西. 从前与经理讨论NVR项目的时候,他提到要预先将用户指定好的磁盘空间预留出来,这是比较容易实现的功能.不容易实现的是自己写一个 ...

  7. linux关闭wps画布进程,在Deepin系统下安装WPS后一直出现一个无响应的wpsoffice进程...

    很多人在Deepin 20 Linux系统下安装WPS新版本后都出现一个无响应的wpsoffice进程,不过似乎不是共有的问题,有些人表示没有这个. 进一步说明 如果把WPS给卸载掉然后再重新安装,还 ...

  8. linux安装qq 中文乱码,在Deepin系统下用Wine运行的QQ音乐界面出现乱码的解决

    QQ音乐是可以在Deepin.Ubuntu等Linux下用Wine来运行的,但是有某些系统下会出现QQ音乐界面乱码.文字乱码的情况.安装包:QQ音乐deepin-wine deb包,支持Ubuntu ...

  9. linux查看fc卡固件版本,几种系统下查看FC HBA卡信息的方法

    在配置磁盘阵列或虚拟磁带库时,往往会以FC接口与主机对接,那就涉及FC HBA卡的查看,本文就此问题在各种系统下的查看方法进行总结与整理. 一.Windows系统 在Windows系统中,可以使用FC ...

最新文章

  1. 教你如何在 Linux 上为 SSH 登录设置电子邮件提醒
  2. markdown--入门
  3. 欢迎动画html,分享7款让你赞叹的HTML5动画应用
  4. Bean的拷贝之BeanUtils
  5. 容器控件StackPanel控件
  6. 【LeetCode】【数组】题号:*189,旋转数组
  7. 将ppt里的图片高分辨率保存的方法
  8. StringBuilder的介绍(转载!)
  9. VB定义字符串数组并赋值
  10. 架构师培训,如何低成本体系性学习? + 最佳实践架构师+自学+老师型:
  11. word删除分页符的两种方法
  12. 【Al TIME】博硕论坛064期 | 清华计算机系大佬齐论Al
  13. C# C++ 互操作:C++向C#输出不定长数组或指针的实现
  14. jQueryUI皮肤下载、jQgrid中更换皮肤
  15. 一本通 1287:最低通行费 C++
  16. 画漫画软件有哪些?这几款绘画软件必不可少!
  17. 广州橙色优学:Java为什么这么火?Java好学吗?
  18. 银行ATM系统问题陈述与词汇表
  19. 波士顿大学计算机科学研究生,波士顿大学计算机科学硕士专业
  20. 统信UOS专业版安装VMware

热门文章

  1. 第二篇 基于自然语言处理的漏洞检测方法综述
  2. 科技创新让互联更简单:荣耀多款新品助力智慧生活全面进阶
  3. Acer 4750 安装黑苹果_黑苹果Mac mini驱动安装与设置教程
  4. 观电视剧《渴望》有感
  5. ubuntu换镜像源与进程
  6. 计算机网络运营职业生涯规划,计算机网络专业的职业的职业生涯规划书如何写?...
  7. 怎么把录音转成文字?试试这几个录音转文字软件
  8. 年龄估计系列(1)年龄性别调研:论文阅读和github资源汇总/数据库/挑战/思考
  9. 基于深度学习的回归预测课程介绍
  10. 【方案开发】红外体温计测温仪方案