摘要: 如何查看linux命令源代码 用linux一段时间了,有时候想看看ls、cat、more等命令的源代码,在下载的内核源码中用cscope没能找到,在网上搜索了一下,将方 法总结如下: 以搜索ls命令源码为例,先搜索命令所在包,命令如下: lpj@lpj-linux:~$ which ls /bin/ls 用命令搜索该软件所在包,代码如下: lpj@lpj-linux:~$ dpkg -S /bin/ls coreutils: /bin/ls 从上一步中可以知道ls命令的实现在包coreutils中,用apt安装(说安装有些歧义,主要是区分apt-get -d)... 阅读全文
posted @ 2011-11-03 14:44 hapus 阅读(4709) 评论(0) 推荐(1) 编辑
摘要: 函数调用约定和堆栈 1 什么是堆栈 编译器一般使用堆栈实现函数调用。堆栈是存储器的一个区域,嵌入式环境有时需要程序员自己定义一个数组作为堆栈。Windows为每个线程自动维护一个堆栈,堆栈的大小可以设置。编译器使用堆栈来堆放每个函数的参数、局部变量等信息。 函数调用经常是嵌套的,在同一时刻,堆栈中会有多个函数的信息,每个函数占用一个连续的区域。一个函数占用的区域被称作帧(frame)。 编译器从高地址开始使用堆栈。 假设我们定义一个数组a[1024]作为堆栈空间,一开始栈顶指针指向a[1023]。如果栈里有两个函数a和b,且a调用了b,栈顶指针会指向函数b的 帧。如果函数b返回。栈顶指针... 阅读全文
posted @ 2011-08-31 19:45 hapus 阅读(746) 评论(0) 推荐(1) 编辑
摘要: GDB是一个强大的命令行调试工具。虽然X Window提供了GDB的图形版DDD,但是我仍然更钟爱在命令行模式下使用GDB。大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本。 UNIX下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行软件的优势在于,它们可以非常容易的集成在一起,使用几个简单的已有工具的命令, 就可以做出一个非常强大的功能。 于是UNIX下的软件比Windows下的软件更能有机地结合,各自发挥各自的长处,组合成更为强劲的功能。而Windows下的图形软件基本上是各自为 营,互相不能调用,很不利于各种软件的相互集成。在这里并不是要和Windows做个什么比.. 阅读全文
posted @ 2011-08-31 16:09 hapus 阅读(3640) 评论(0) 推荐(2) 编辑
摘要: [HttpPost] vs [AcceptVerbs(HttpVerbs.Post)] is there a difference?1、the HttpPost attributeis a short for the HttpVerbs.Post one but since MVC 2.0. 2、[HttpPost] is shorthand for [AcceptVerbs(HttpVerbs.Post)]. The only difference is that you can't use [HttpGet, HttpPost] (and similar) together on 阅读全文
posted @ 2011-04-29 10:06 hapus 阅读(5525) 评论(2) 推荐(1) 编辑
摘要: getaddrinfo()函数详解1. 概述IPv4中使用gethostbyname()函数完成主机名到地址解析,这个函数仅仅支持IPv4,且不允许调用者指定所需地址类型的任何信息,返回的结构只包含了用于存储IPv4地址的空间。IPv6中引入了getaddrinfo()的新API,它是协议无关的,既可用于IPv4也可用于IPv6。getaddrinfo函数能够处理名字到地址以及服务到端口这两种转换... 阅读全文
posted @ 2010-11-19 12:41 hapus 阅读(98816) 评论(1) 推荐(5) 编辑
摘要: typedef struct addrinfo { int ai_flags; //AI_PASSIVE,AI_CANONNAME,AI_NUMERICHOST int ai_family; //AF_INET,AF_INET6 int ai_socktype; //SOCK_STREAM,SOCK_DGRAM int ai_protocol; //IPPROTO_IP, IPPROTO_IP... 阅读全文
posted @ 2010-11-19 11:47 hapus 阅读(9105) 评论(0) 推荐(0) 编辑
摘要: gethostbyname()函数说明——用域名或主机名获取IP地址 包含头文件 #include <netdb.h> #include <sys/socket.h> 函数原型 struct hostent *gethostbyname(const char *name); 这个函数的传入值是域名或者主机名,例如"www.google.cn"等等。传... 阅读全文
posted @ 2010-11-19 11:10 hapus 阅读(76535) 评论(1) 推荐(5) 编辑
摘要: 关于用memcmp()比较两个结构体,做了以下调试: 代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--#include<stdio.h>#include<stdlib.h>#include<string.h>st... 阅读全文
posted @ 2010-11-11 20:16 hapus 阅读(7623) 评论(0) 推荐(0) 编辑
摘要: shell脚本中特定符合变量的含义:$# 传递到脚本的参数个数 $* 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个 $$ 脚本运行的当前进程PID号 $! 后台运行的最后一个进程的进程号 $@ 与$*相同,但是使用时用双引号,并将各个参数加双引号返回 $- 显示shell使用的当前选项,与set命令功能相同 $_上一个命令的最后一个参数 $?显示最后命令的退出状态,... 阅读全文
posted @ 2010-11-04 14:58 hapus 阅读(473) 评论(0) 推荐(0) 编辑
摘要: make的自动变量$@    规则目标的文件名.如果目标是档案文件的一个成员,"$@"就是档案文件的名称$%    当目标是档案文件的一个成员时,"$%"是该成员的名称.否则"$%"为空$<    第一个依赖文件的名称$?    以空格隔开的比目标新的所有依赖文件名.若依赖文件是档案文件的成员,只使用成员的名称$^    以空格隔开的所有依赖文件名.若依赖文件是档案文件的成员,只使用成员名称... 阅读全文
posted @ 2010-11-04 14:45 hapus 阅读(988) 评论(0) 推荐(0) 编辑