使用struct ifreq实现ifconfig

ifconfig命令通过封装系统函数来管理网口状态。本文介绍如何利用struct ifreq结构体进行网络接口的状态获取和设置。struct定义在<net/if.h>头文件,ioctl操作在<linux/sockios.h>,示例代码展示了获取信息的过程,启用修改状态功能需超级用户权限。
摘要由CSDN通过智能技术生成

ifconfig是我们查看/设定网口状态常用的命令,其实这个命令就是对一些系统函数的封装,通过对struct ifreq的修改,我们可以很轻易地设定网口状态,获取网口状态。

这个结构体位于<net/if.h>头文件中,打开去看看吧,对照着英文注释,很容易找到自己想要的东西。而网卡相关的一些ioctl操作, 也就是用于查询/修改状态的标记位,都在<linux/sockios.h>中,很清晰的,找份源码看看吧。下面是一个小示例,演示了获取信息的过程,如果有需要,也可以启用那个修改状态的函数,注意,修改状态标记位的时候,需要用到超级用户的权限。

/**
 * \file getifstat.c
 * \author  wzj
 * \brief 访问这个struct ifconf 修改,查询状态
 * \version 
 * \note  
 * \date: 2012年08月11日星期六22:55:25
 */ 
#include <net/if.h>		/* for ifconf */
#include <linux/sockios.h>	/* for net status mask */
#include <netinet/in.h>		/* for sockaddr_in */
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <stdio.h>

#define MAX_INTERFACE	(16)

void port_status(unsign
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值