2010年12月30日

Linux C 函数参考(内存控制)

摘要: //今天把这部分【Linux C函数库详解】chap3 内存分配函数 看了一下。以下为内容calloc(配置内存空间) 相关函数 malloc,free,realloc,brk表头文件 #include <stdlib.h>定义函数 void *calloc(size_t nmemb,size_t size);函数说明 calloc()用来配置nmemb个相邻的内存单位,每一单位的大小为size,并返回指向第一个元素的指针。这和使用下列的方式效果相同:malloc(nmemb*size);不过,在利用calloc()配置内存时会将内存内容初始化为0。返回值 若配置成功则返回一指针, 阅读全文

posted @ 2010-12-30 00:29 wolflion 阅读(224) 评论(0) 推荐(0) 编辑

2010年11月25日

查看内核版本和发行版本

摘要: 首先,要分清内核版本号和发行版本号的区别。因为所有linux都是使用kernel.org上来的内核来作为发行版的基础的,所以内核版本号的高低大致能体现该linux版本的新旧。而发行版本的版本号完全是各发行商自己定义的,不能用来和其它发行版本的版本号进行比较,比如SuSE的10.0不能和Red Hat的9.0比,也不能和Ubuntu的7.04比,没有可比性。发行版本号只是各个厂商为了区别自己的产品而编的号。以ubuntu为例,谢谢查看发行版本号,可以采用以下两种方法之一。一.在终端中执行下列指令:cat /etc/issue可以查看当前正在运行的 Ubuntu 的版本号。其输出结果类似下面的内容 阅读全文

posted @ 2010-11-25 00:04 wolflion 阅读(228) 评论(0) 推荐(0) 编辑

2010年11月17日

unix 环境高级编成 apue.h ,apueerror.h的代码

摘要: ===================apueerror.h=========================================$ cat apueerror.h#include <errno.h> /* for definition of errno */#include <stdarg.h> /* ISO C variable aruments */static void err_doit(int, int, const char *, va_list);/** Nonfatal error related to a system call.* Pri 阅读全文

posted @ 2010-11-17 21:05 wolflion 阅读(492) 评论(0) 推荐(0) 编辑

2010年11月11日

Ubuntu的新旅程

摘要: 之前呢,手上有张关于 Mandriva的盘,可能是2.4的核,很多命令工具都没有,同事建议安装Ubuntu,自己试了下,果然安装很方便。当然OpenSolaris自己没安装起来,这部分不太会安装-----以后用到再看吧。昨天安装了Ubuntu,但不小心安装的是中文,本来可以更改一下系统里的语言设置,出于对ssh工具对中文字符集支持的担忧,今天决定重装english了。碰到两个问题:1. Q:ubuntu修改初始root密码 [root初始密码是随机的] A: $sudopasswdroot 【也可以屏蔽root帐号 sudo passwd -l root】2.Q:Ubuntu服务器上安装SS. 阅读全文

posted @ 2010-11-11 23:53 wolflion 阅读(176) 评论(0) 推荐(0) 编辑

摘要: 这几个宏是为了进行条件编译。一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是"条件编译"。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。条件编译命令最常见的形式为:#ifdef 标识符程序段1#else程序段2#endif它的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2。其中#else部分也可以没有,即:#ifdef程序段1#denif这里的"程序段"可以是语句组,也可以是命令行 阅读全文

posted @ 2010-11-11 23:19 wolflion 阅读(192) 评论(0) 推荐(0) 编辑

2010年6月20日

解析#pragma指令

摘要: 转自CSDN在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。其格式一般为: #Pragma Para其中Para 为参数,下面来看一些常用的参数。(1)message 参数。 Message 参数是我最喜欢的一个参数,它能够在编译信息输出窗口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为:#Pragma message 阅读全文

posted @ 2010-06-20 15:20 wolflion 阅读(214) 评论(0) 推荐(0) 编辑

2010年6月11日

Protocol Stack

摘要: 简介 协议栈是指网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程:由上层协议到底层协议,再由底层协议到上层协议。使用最广泛的是英特网协议栈,由上到下的协议分别是:应用层(HTTP,TELNET,DNS,EMAIL等),运输层(TCP,UDP),网络层(IP),链路层(WI-FI,以太网,令牌环,FDDI等),物理层。 协议栈 Protocol Stack ↑ 如果不参考下面进行数据交换的协议或通信过程的讨论,那么就不可能讨论计算机的互联。对协议的任何讨论通常都会牵涉到与开放式系统互联(OSI)协议栈的比较。OSI协议栈定义了厂商们如何才能生产可以与其它厂商的产品一起工作的产品。.. 阅读全文

posted @ 2010-06-11 16:30 wolflion 阅读(828) 评论(0) 推荐(0) 编辑

协议栈开发学习总结

摘要: 2008年5月30日 星期六晴 近来一直很少些关于技术方面的文章,一来是被工作和生活所累,没有很多闲暇多余的时间,二来呢是觉得一直没有好的case,或则有好的case,但觉得目前在这个case方面,自己还不算很professional。今天心情不错,感觉也很好,就把我近一年来在“协议栈”开发方面的一些经验写下来,算是对自己这一阶段的一个终结,也希望能对后来者能有所帮助。 首先,不要以为做协议栈开发很难(诚然,商用稳定的协议栈开发的确也不容易^_^),所以首先一定要有足够的信心,其次如果有前辈带你上手那就好很多,如果没有,自己一个人去“专研”,那么你做的首要的事情还是要有信心,不要有“惧怕”的思 阅读全文

posted @ 2010-06-11 15:09 wolflion 阅读(12871) 评论(0) 推荐(1) 编辑

标题:几种开放源码的TCPIP协议栈比较

摘要: 2008-01-21 14:05:221、BSD TCP/IP协议栈 BSD栈历史上是其他商业栈的起点,大多数专业TCP/IP栈(VxWorks内嵌的TCP/IP栈)是BSD栈派生的。这是因为BSD栈在BSD许可协议下提供了这些专业栈的雏形,BSD许用证允许BSD栈以修改或未修改的形式结合这些专业栈的代码而无须向创建者付版税。同时,BSD也是许多TCP/IP协议中的创新(如广域网中饿拥塞控制和避免)的开始点。2、uC/IP uC/IP是由Guy Lancaster编写的一套基于uC/OS且开放源码的TCP/IP协议栈,亦可移植到其它操作系统,是一套完全免费的、可供研究的TCP/IP协议栈,uC 阅读全文

posted @ 2010-06-11 15:02 wolflion 阅读(768) 评论(0) 推荐(1) 编辑

2010年6月9日

关于读源代码【集各家所长,要好好回去实践下】

摘要: 以Linux内核源代码为例:使用工具source insight首先建立源代码工程,source insight会帮助你建立一个库它能够帮助我们在看一段源码的时候,跟踪函数、变量的定义、声明、调用等情况能够识别多种文件,基本上常见的都能识别看源码的顺序,个人以为:1)看源代码的目录结构,大致了解各个目录下都有些什么,可能是什么,有的源代码中有readme或者其他文档可以告诉我们源代码的目录结构这时候有两种不同的顺序看源码了:第一种:大致看一下Makefile,如果对make很熟的话,就可以知道源代码是如何编译的,可以知道程序的入口是什么这里可能需要掌握一些gcc编译工具相关的知识,可以在gnu 阅读全文

posted @ 2010-06-09 17:06 wolflion 阅读(284) 评论(0) 推荐(0) 编辑

导航