请问在linux下如何获得本机mac地址 不使用socket这个函数

vieri122 2011-03-08 11:42:10
请问在linux下如何获得mac地址 不使用socket这个函数
网上找了一些如下:
int main(void)
{
int sockfd;
struct ifreq struReq;
sockfd = socket(PF_INET,SOCK_STREAM,0);
memset(&struReq,0,sizeof(struReq));

strncpy(struReq.ifr_name, "eth0", sizeof(struReq.ifr_name));

ioctl(sockfd,SIOCGIFHWADDR,&struReq);
fprintf(stderr, "%d-%s\n", __LINE__, strerror(errno));
printf("%s\n", ether_ntoa(struReq.ifr_hwaddr.sa_data));
close(sockfd);
}
请问还有别的方法吗?不想使用socket函数,有没有linux的系统api来获取啊?
...全文
252 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
yong_f 2011-03-11
  • 打赏
  • 举报
回复
MAC网络的硬件地址,只能用socket和ioctl来获取
尽管可以通过ifconfig命令获得,其实也用的是socket和ioctl来获取到的。
而且用system,poen等函数调用ifconfig都会重新启动的一个进程,等进程结束后才能返回。进程启动时需要消耗很大的内核资源,影响程序的性能。
叶之香 2011-03-10
  • 打赏
  • 举报
回复
redhat下配置文件/etc/sysconfig/hwconf里面可以找到
  • 打赏
  • 举报
回复
写脚本抓,就像上面实现的那样。
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dongjiawei316 的回复:]

我正在使用的:

char mac[100] = {0};
FILE* cmdFile;
//读取设备MAC
cmdFile = popen("ifconfig|grep -m1 HWaddr|awk \'{print $5}\' ", "r");
fread(mac, 1, sizeof(mac), cmdFile);
[/Quote]
起个昵称真难 2011-03-09
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 thel0ver 的回复:]
用ifconfig是不是路子有点野?
[/Quote]
哈哈!
影月之伤 2011-03-09
  • 打赏
  • 举报
回复
ifconfig啦mac和ip都有,类似于windows下的ipconfig
louyong0571 2011-03-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dongjiawei316 的回复:]
我正在使用的:

char mac[100] = {0};
FILE* cmdFile;
//读取设备MAC
cmdFile = popen("ifconfig|grep -m1 HWaddr|awk \'{print $5}\' ", "r");
fread(mac, 1, sizeof(mac), cmdFile);
[/Quote]
+1
baoxintc 2011-03-09
  • 打赏
  • 举报
回复
按alt+F2 输入 gnome-terminal 打开用户终端 然后输入su 在输入密码 在打 ifconfig 就可以观察到具体信息了
Thel0ver 2011-03-09
  • 打赏
  • 举报
回复
用ifconfig是不是路子有点野?
dongjiawei316 2011-03-08
  • 打赏
  • 举报
回复
我正在使用的:

char mac[100] = {0};
FILE* cmdFile;
//读取设备MAC
cmdFile = popen("ifconfig|grep -m1 HWaddr|awk \'{print $5}\' ", "r");
fread(mac, 1, sizeof(mac), cmdFile);


justkk 2011-03-08
  • 打赏
  • 举报
回复
system("ifconfig -a");
无知者无谓 2011-03-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 justkk 的回复:]

调用ifconfig 命令?
[/Quote]
实际用的就是ioctl的方法。
vieri122 2011-03-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 justkk 的回复:]

调用ifconfig 命令?
[/Quote]
请问具体如何操作?
justkk 2011-03-08
  • 打赏
  • 举报
回复
调用ifconfig 命令?

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧