tqyou85
码龄16年
求更新 关注
提问 私信
  • 博客:180,613
    180,613
    总访问量
  • 7
    原创
  • 34
    粉丝
  • 4
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:湖北省
加入CSDN时间: 2008-10-07
查看详细资料
个人成就
  • 获得5次点赞
  • 内容获得10次评论
  • 获得44次收藏
创作历程
  • 4篇
    2011年
  • 19篇
    2010年
  • 40篇
    2009年
  • 46篇
    2008年
TA的专栏
  • c语言
    11篇
  • iptables
    12篇
  • linux学习
    46篇
  • socket编程
    17篇
  • tc学习
    4篇
  • 移动通信
    2篇
  • 网络相关
    14篇

TA关注的专栏 0

TA关注的收藏夹 0

TA关注的社区 0

TA参与的活动 0

  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

linux下安装expect [转]

转载地址:http://blog.csdn.net/wind19/archive/2009/11/30/4905453.aspx我试验的环境是SuSe Linux 10.1expect的主页:http://expect.nist.gov/最新稳定版5.45.0的下载地址:http
转载
发布博客 2011.07.20 ·
1912 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

dlopen dlsym dlclose解析

1.  打开动态链接库:    #include     void *dlopen(const char *filename, int flag);    该函数返回操作句柄,如:    void *pHandle = dlopen(strSoFilePath, RTLD_LAZ
转载
发布博客 2011.07.12 ·
1017 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

使用busybox定制自己的应用程序

使用busybox定制自己的应用程序1.      Busybox配置首先在网上下载一个稳定的busybox版本,我用的版本是busybox-1.18.2,然后解压到工作目录。Busybox的配置方法和标准的linux内核的配置方法非常类似,我们只要切换到busybox的根目录下,使用make menuconfig命令就可以轻松定制出适合特定用途的一组应用程序。#make menuconfig#make#make install安装后,会发现busybox的bin目录下只有一个busybox
原创
发布博客 2011.04.06 ·
2584 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Busybox内置的tftpd, ftpd, telnetd, udhcpd, udhcpc配置


Busybox内置的tftpd, ftpd, telnetd, udhcpd, udhcpc配置

Tftpd,ftpd可以由inetd来管理,telnetd理论上也可以由inetd来管理,但是目前开发板上我还没调通,只能telnetd独立运行。
1.    Tftpd
配置步骤:
#mkdir /tftp_ftp_dir  //创建tftp server的根目录
#vi /etc/inetd.conf  //配置i
原创
发布博客 2011.03.11 ·
11572 阅读 ·
0 点赞 ·
0 评论 ·
13 收藏

UNIX 高手的10 个习惯

采用 10 个能够提高您的 UNIX®命令行效率的好习惯——并在此过程中摆脱不良的使用模式。本文循序渐进地指导您学习几项用于命令行操作的技术,这些技术非常好,但是通常被忽略。了解常见错误和克服它们的方法,以便您能够确切了解为何值得采用这些 UNIX 习惯。 引言当您经常使用某个系统时,往往会陷入某种固定的使用模式。有时,您没有养成以尽可能最好的方式做事的习惯。有时,您的不良习惯甚至会导致出现混乱。纠正此类缺点的最佳方法之一,就是有意识地采用抵制这些坏习惯的好习惯。本文提出了 10 个值得采用的
转载
发布博客 2010.10.13 ·
643 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

用gdb跟踪函数栈桢的变化情况

代码如下:#include void hello(){ int i = 0; printf("i=%d, hello world/n", i);}int main(){ hello(); return 0;}gdb生成调试信息,进去看看。在hello处设置断点1,在main处设置断点2运行到断点2处,查看寄存器情况:Breakpoint 2, 0x080483f4 in main ()Missing sepa
转载
发布博客 2010.10.13 ·
778 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

linux下gdb单步调试(下)(转摘)

四、源代码的内存你可以使用 info line 命令来查看源代码在内存中的地址。 info line 后面可以跟 “ 行号 ” , “ 函数名 ” , “ 文件名 : 行号 ” , “ 文件名 : 函数名 ” ,这个命令会打印出所指定的源码在运行时的内存地址,如:(gdb) info line tst.c:funcLine 5 of "tst.c" starts at address 0x8048456 and ends at 0x804845d .还有一个命令( disass
转载
发布博客 2010.10.08 ·
637 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

linux下gdb单步调试(中)(转摘)


一、设置断点( BreakPoint )

我们用 break 命令来设置断点。正面有几点设置断点的方法:

break <function>
在进入指定函数时停住。 C++ 中可以使用 class::function 或 function(type,type) 格式来指定函数名。

break <linenum>
在指定行号停住。

break +offset
转载
发布博客 2010.10.08 ·
864 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

linux下gdb单步调试(上)转载


用 GDB 调试程序

GDB 概述
————

GDB 是 GNU 开源组织发布的一个强大的 UNIX 下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像 VC 、 BCB 等 IDE 的调试,但如果你是在 UNIX 平台下做软件,你会发现 GDB 这个调试工具有比 VC 、 BCB 的图形化调试器更强大的功能。所谓 “ 寸有所长,尺有所短 ” 就是这个道理。

一般来说, GDB 主要帮忙你
转载
发布博客 2010.10.08 ·
501 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

linux ln命令详解


ln是linux中一个非常重要命令。它的功能是为某一个文件在另外一个位置建立一个同步的链接,这个命令最常用的参数是-s,具体用法是:

ln -s  源文件 目标文件    -s 是 symbolic的意思。
例:ln  -s  /lib/lsb   /usr/lj
即:在usr目录下建立指向/lib/lsb目录的lj文件。

当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必
转载
发布博客 2010.09.27 ·
609 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

kmalloc, vmalloc分配的内存结构


kmalloc, vmalloc分配的内存结构

对于提供了MMU(存储管理器,辅助操作系统进行内存管理,提供虚实地址转换等硬件支持)的处理器而言,Linux提供了复杂的存储管理系统,使得进程所能访问的内存达到4GB。
  进程的4GB内存空间被人为的分为两个部分--用户空间与内核空间。用户空间地址分布从0到3GB(PAGE_OFFSET,在0x86中它等于0xC0000000),3GB到4GB为内核空间。
  内核空间中,从3G到vmallo
转载
发布博客 2010.09.13 ·
541 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Linux内核模块参数权限


在进行linux内核模块编程时,常常需要给模块传递参数,其作用是从使用的设备号到驱动应当任何操作的几个方面. 例如, SCSI 适配器的驱动常常有选项控制标记命令队列的使用,
IDE 驱动允许用户控制 DMA 操作. 如果你的驱动控制老的硬件, 还需要被明确告知哪里去找硬件的 I/O 端口或者 I/O 内存地址.
内核通过在加载驱动的模块时指定可变参数的值, 支持这些要求.
       参数常常被声明为一个静态全局变量,如static int num=
转载
发布博客 2010.09.09 ·
1003 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

__read_mostly变量


__read_mostly原语将定义为存放在.data.read_mostly段中
  include/asm/cache.h
#define __read_mostly __attribute__((__section__(".data.read_mostly")))

    由此可见,我们可以将经常需要被读取的数据定义为 __read_mostly类型, 这样Linux内核被加载时,该数据将自动被存放到Cache中,以提高整个系统的执行效率.
转载
发布博客 2010.08.30 ·
5474 阅读 ·
0 点赞 ·
0 评论 ·
8 收藏

Linux中EXPORT_SYMBOL的用法


EXPORT_SYMBOL标签内定义的函数或者符号对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用,即使用EXPORT_SYMBOL可以将一个函数以符号的方式导出给其他模块使用。
您还可以手工修改内核源代码来导出另外的函数,用于重新编译并加载新内核后的测试。


Linux symbol export method:

[1] If we want export the symbol in a module,
转载
发布博客 2010.08.30 ·
4877 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

static变量

static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?答:全局变量(外部变量)的说明之前再冠以static就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局
转载
发布博客 2010.08.13 ·
370 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

一种C程序内存越界调试方法


偶然在ChinaUnix上看到一篇关于程序调试的帖子,里面讨论到了很多调试程序的方法,其中一个方法如下,觉得还不错:
   
      如果别人的程序里malloc很多,不知道哪里有内存越界,
  那就把malloc, free重新定义掉,放在一个头文件里,如mem.h
  用gcc -include mem.h的方式重新编译代码,可以不修改别人的代码来检查内存问题。
 (类似的,还要重定义strdup, realloc等函数)<
转载
发布博客 2010.08.11 ·
901 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

IP协议号

十进制 关键字 协议
======= ======= ==============
0 HOPOPT IPv6 逐跳选项
1 ICMP Internet 控制消息
2 IGMP Internet 组管理
3 GGP 网关对网关
4 IP IP 中的 IP(封装)
5 ST 流
6 TCP 传输控制
7 CBT CBT
8 EGP 外部网关协议
转载
发布博客 2010.08.04 ·
688 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

linux内核likely() 与 unlikely()


内核中的 likely() 与 unlikely()
在 2.6 内核中,随处可以见到 likely() 和 unlikely() 的身影,那么为什么要用它们?它们之间有什么区别?
首先要明确:
            if(likely(value)) 等价于 if(value)
            if(unlikely(value)) 也等价于 if(value)
也就是说 likely() 和 unlikely() 从阅
转载
发布博客 2010.08.01 ·
515 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Linux TCP/IP协议栈笔记 路由缓存


转载:http://blog.163.com/s_xli1/blog/static/783579622008416091770/
 
内核版本:2.6.12
 
 
1、什么是路由缓存
当数据包进入网络层后,需要做的第一件事情,就是进行路由查找,也即根据数据包的目标地址,查找需要转发的目的网关,当然,实际情况比这个要复杂,查找条件并不仅限于目的地址。

为了提高路由查找的效率,路由子系统引入了路由缓存的概
转载
发布博客 2010.07.28 ·
1620 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Linux 2.6内核中新的锁机制--RCU


本文详细地介绍了 Linux 2.6 内核中新的锁机制 RCU(Read-Copy Update) 的实现机制,使用要求与典型应用。
一、 引言
众所周知,为了保护共享数据,需要一些同步机制,如自旋锁(spinlock),读写锁(rwlock),它们使用起来非常简单,而且是一种很有效的同步机制,在UNIX系统和Linux系统中得到了广泛的使用。但是随着计算机硬件的快速发展,获得这种锁的开销相对于CPU的速度在成倍地增加,原因很简单,CPU的速度与访问内存的速度
转载
发布博客 2010.07.28 ·
396 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多