直接贴代码:
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <net/if.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
int check_nic(char *nic_name)
{
struct ifreq ifr;
int skfd = socket(AF_INET, SOCK_DGRAM, 0);
strcpy(ifr.ifr_name, nic_name);
if (ioctl(skfd, SIOCGIFFLAGS, &ifr) < 0)
{
close(skfd);
return -1;
}
if(ifr.ifr_flags & IFF_RUNNING)
{
close(skfd);
return 0;
}
else
{
close(skfd);
return -1;
}
}
int main(int argc, char const *argv[])
{
while(1)
{
printf("link status :%d\n",check_nic("eth0"));
sleep(1);
}
return 0;
}
本文介绍了一个简单的C程序,用于检查特定网络接口(如eth0)的状态是否为运行中。通过使用socket和ioctl函数,程序能够读取接口标志并判断其是否处于运行状态。程序包含一个check_nic函数,用于进行状态检查,以及一个main函数,用于持续监控并打印接口状态。

8382

被折叠的 条评论
为什么被折叠?



