﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-bobocpp</title><link>http://www.cppblog.com/bobocpp/</link><description /><language>zh-cn</language><lastBuildDate>Tue, 07 Apr 2026 06:04:44 GMT</lastBuildDate><pubDate>Tue, 07 Apr 2026 06:04:44 GMT</pubDate><ttl>60</ttl><item><title>linux系统ioctl使用示例</title><link>http://www.cppblog.com/bobocpp/archive/2009/02/21/74475.html</link><dc:creator>BoBoCpp</dc:creator><author>BoBoCpp</author><pubDate>Fri, 20 Feb 2009 16:52:00 GMT</pubDate><guid>http://www.cppblog.com/bobocpp/archive/2009/02/21/74475.html</guid><wfw:comment>http://www.cppblog.com/bobocpp/comments/74475.html</wfw:comment><comments>http://www.cppblog.com/bobocpp/archive/2009/02/21/74475.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/bobocpp/comments/commentRss/74475.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bobocpp/services/trackbacks/74475.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 程序1：检测接口的&nbsp;inet_addr,netmask,broad_addr程序2：检查接口的物理连接是否正常程序3：更简单一点测试物理连接程序4：调节音量***************************程序1****************************************#include&nbsp;&lt;stdio.h&gt;#include&nbsp;&lt;...&nbsp;&nbsp;<a href='http://www.cppblog.com/bobocpp/archive/2009/02/21/74475.html'>阅读全文</a><img src ="http://www.cppblog.com/bobocpp/aggbug/74475.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bobocpp/" target="_blank">BoBoCpp</a> 2009-02-21 00:52 <a href="http://www.cppblog.com/bobocpp/archive/2009/02/21/74475.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux下检测网卡与网线连接状态，使用ioctl向socket发送SIOCETHTOOL命令字</title><link>http://www.cppblog.com/bobocpp/archive/2009/02/20/74471.html</link><dc:creator>BoBoCpp</dc:creator><author>BoBoCpp</author><pubDate>Fri, 20 Feb 2009 15:46:00 GMT</pubDate><guid>http://www.cppblog.com/bobocpp/archive/2009/02/20/74471.html</guid><wfw:comment>http://www.cppblog.com/bobocpp/comments/74471.html</wfw:comment><comments>http://www.cppblog.com/bobocpp/archive/2009/02/20/74471.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/bobocpp/comments/commentRss/74471.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bobocpp/services/trackbacks/74471.html</trackback:ping><description><![CDATA[<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
<p><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000"><font style="BACKGROUND-COLOR: #eeeeee">#include&nbsp; &lt;stdio.h&gt;<br>#include&nbsp; &lt;stdlib.h&gt;<br>#include&nbsp; &lt;string.h&gt;<br>#include&nbsp; &lt;fcntl.h&gt;<br>#include&nbsp; &lt;errno.h&gt;<br>#include&nbsp; &lt;sys/ioctl.h&gt;<br>#include&nbsp; &lt;sys/types.h&gt;<br>#include&nbsp; &lt;sys/socket.h&gt;<br>#include&nbsp; &lt;linux/if.h&gt;</font></span></p>
<span style="COLOR: #000000"><font style="BACKGROUND-COLOR: #eeeeee">
<p><br>typedef unsigned short u16;<br>typedef unsigned int u32;<br>typedef unsigned char u8;</p>
<p>#include&nbsp; &lt;linux/sockios.h&gt;<br>#include&nbsp; &lt;linux/ethtool.h&gt;<br>int get_netlink_status(const char *if_name);</p>
<p><br>int main(int argc, char* argv[])<br>{<br>&nbsp;if(argc != 2) <br>&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fprintf(stderr, "usage: %s &lt;ethname&gt;", argv[0]);<br>&nbsp;&nbsp;&nbsp;&nbsp; return -1;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; if(getuid() != 0)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fprintf(stderr, "Netlink Status Check Need Root Power.\n");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 1;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; printf("Net link status: %s\n", get_netlink_status(argv[1])==1?"up":"down");<br>&nbsp;&nbsp;&nbsp; return 0;<br>}<br>// if_name like "ath0", "eth0". Notice: call this function<br>// need root privilege.<br>// return value:<br>// -1 -- error , details can check errno<br>// 1 -- interface link up<br>// 0 -- interface link down.<br>int get_netlink_status(const char *if_name)<br>{<br>&nbsp;&nbsp;&nbsp; int skfd;<br>&nbsp;&nbsp;&nbsp; struct ifreq ifr;<br>&nbsp;&nbsp;&nbsp; struct ethtool_value edata;<br>&nbsp;&nbsp;&nbsp; edata.cmd = ETHTOOL_GLINK;<br>&nbsp;&nbsp;&nbsp; edata.data = 0;<br>&nbsp;&nbsp;&nbsp; memset(&amp;ifr, 0, sizeof(ifr));<br>&nbsp;&nbsp;&nbsp; strncpy(ifr.ifr_name, if_name, sizeof(ifr.ifr_name) - 1);<br>&nbsp;&nbsp;&nbsp; ifr.ifr_data = (char *) &amp;edata;<br>&nbsp;&nbsp;&nbsp; if (( skfd = socket( AF_INET, SOCK_DGRAM, 0 )) == 0)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<br>&nbsp;&nbsp;&nbsp; if(ioctl( skfd, SIOCETHTOOL, &amp;ifr ) == -1)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; close(skfd);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; close(skfd);<br>&nbsp;&nbsp;&nbsp; return edata.data;<br>}<br></font></span></p>
</div>
<img src ="http://www.cppblog.com/bobocpp/aggbug/74471.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bobocpp/" target="_blank">BoBoCpp</a> 2009-02-20 23:46 <a href="http://www.cppblog.com/bobocpp/archive/2009/02/20/74471.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>