python 检测 网络物理连接
用c语言实现为
bool CSettings::check_linked()
{
#define LINKTEST_GLINK 0x0000000a
struct linktest_value
{
unsigned int cmd;
unsigned int data;
};
int sd = -1;
char* dev_name = "eth0";
// printf("<---<hgx> network name : %s \n",dev_name);
struct ifreq ifr;
struct linktest_value edata;
memset(&edata,0,sizeof(struct linktest_value));
sd = socket(AF_INET, SOCK_STREAM, 0);
if (sd < 0)
{
printf("[gxh:%s]get network status: open socket error\n",__FUNCTION__);
return false;
}
edata.cmd = LINKTEST_GLINK;
strncpy(ifr.ifr_name, dev_name, sizeof(ifr.ifr_name)-1);
ifr.ifr_data = (char *) &edata;
if (ioctl(sd, SIOCETHTOOL, &ifr) == -1)
{
printf("[gxh:%s]ETHTOOL_GLINK failed: %s\n",__FUNCTION__, strerror(errno));
::close(sd);
return false;
}
if(edata.data)
{
::close(sd);
return true;
}
::close(sd);
return false;
}
请问 用 python 如何实现该函数, 特别是 ioctl那块, 我对这个不熟悉