Why JulianTec

学习实干型的工作室

   JulianTec并非纯粹追求商业利益的IT培训机构,她宣传谨慎,天生就立志成为实干家,而非简单的言辞吹嘘者和自我贴金者;

   相比较于经济利益,她更看重能在“久联”中形成一个团队学习进步的团队。

有可信赖的专业能力

   在JulianTec这边,不仅是讲师团队,就连其建立者也是在嵌入式Linux研发行业摸爬滚打多年的资深工程师出身。

   所以,相较于那些由业外人士创办的纯商业IT培训机构而言,她更能保证您的学习效果。

长久接触,终生受益

   短短数月的教学不可能教会您所有知识;SO,我们努力将巨立安打造成一个平台,一个可供您在您的职业生涯中长久与之保持联系,并从中不断受益的平台。

   相教于几个月的天天见面,我们更期待在您结业后能常在这个平台中看到您的身影。

培训和收费都阶段化

   由于不同的培训内容难度不一样,所以在培训时间和上课方式上就应该区别对待;

   因此JulianTec将整个培训周期及收费方式都做了“阶段化”,这不像其他商业培训机构那样眉毛胡子一把抓式的培训和收费。

理论联系实际的培训

   JulianTec的整个培训周期,都是以理论联系实际项目的形式来进行的。

   与其说我们是在教您书本上的具体研发技术,倒不如说是在传授我们自己的切身经验、是在培养你成为一个合格研发工程师的做事习惯和做事方法。

软硬结合的项目实作

   在嵌入式Linux产品的研发中,“软件硬件永远不分家”是一个永远也不用经过证明的公理。

   所以我们不仅会在上课过程中介绍大量的硬件知识,而且也会在项目的实作过程中牵涉进去一些简单电路的设计。

通过JulJob保障就业

   培训完结业后您有机会留下来继续服务于JulianTec,也可以透过JulJob人才职位对接器来找到合适的研发工作。

   在JulJob中有全国范围内众多的创新型研发企业与JulianTec保持着长期的合作。

消息"Re: Re:Re: Linux下面怎么样写C代码得到当前我系统里网卡的IP地址和MAC地址?"的具体信息

Re: Re:Re: Linux下面怎么样写C代码得到当前我系统里网卡的IP地址和MAC地址?



我问一下,对我们这样刚开始接触Linux编程的人来说,没
有文档又如何知道要使用 SIOCGIFHWADDR 和 struct 
ifreq ???

以后要碰到这种问题的话,有没有什么线索可以帮我们找到
需要的答案?可别说搜索 google/baidu/julwiki 
之类的。


是有方法可以去找线索的,你不是说可以用 ifconfig 来查
找ip和mac么?那我们就可以从这里去找线索。

最最直接的方式,就是去看 ifconfig 的源代码,但是也许
我们没有这么多时间去看这些代码。我们可以使用 strace 
程序,来跟踪一下 ifconfig 会用到什么哪些系统调用。比
方像我这样:

[yihect@panda ~]$ strace /sbin/ifconfig eth0

这个命令输出了很多系统调用的执行。一般情况下面,像
取得ip/mac 之类的事情,不会由 read/read/write/
mmap2/close 等系统调用来完成,而是要通过 ioctl 的
系统调用来完成。

那我们就关注这个命令的输出中,那些 ioctl 的对应行。在
其中,你可以找到像下面这样的内容:

...
ioctl(5, SIOCGIFHWADDR, {ifr_name="eth0", 
		ifr_hwaddr=00:0c:29:f5:6a:8a}) = 0
...
ioctl(4, SIOCGIFADDR, {ifr_name="eth0", ifr_addr={AF_INET,
inet_addr("192.168.220.3")}}) = 0
...
看到了吧,这就是我们要的东西了。接下来,很自然的, 我们就需要用到这里出现的东西作为关键字来查找 /usr/include 目录,看其中的哪些头文件定义了这些东西: SIOCGIFHWADDR, SIOCGIFADDR, ifr_name, ifr_hwaddr, ifr_addr 以 ifr_hwaddr 为例,我使用的命令是: find /usr/include -type f -name "*.h" -exec grep -l ifr_hwaddr '{}' \; 它告诉我们有两个文件中出现了 ifr_hwaddr 这个关键字: /usr/include/linux/if.h /usr/include/net/if.h 下面那个更加详细,从内容上面可知道,它是属于 c 库 的头文件。我们可以使用里面所定义的这些结构体来取 得网络接口卡(IF)的相关信息。 用同样的方式,我们也可以找到定义有 SIOCGIFHWADDR 的头文件。经过如此的一番 hacking 之后,我们便可以写出前面那样的代码了,对吧?