SunBo

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
上一页 1 ··· 28 29 30 31 32

2009年7月9日

摘要: 1. 文件描述符在内核中数据结构 在具体说dup/dup2之前, 我认为有必要先了解一下文件描述符在内核中的形态。一个进程在此存在期间,会有一些文件被打开,从而会返回一些文件描述符,从shell中运行一个进程,默认会有3个文件描述符存在(0、1、2), 0与进程的标准输入相关联,1与进程的标准输出相关联,2与进程的标准错误输出相关联,一个进程当前有哪些打开的文件描述符可以通过/proc/进程ID/fd目录查看。 下图可以清楚的说明问题: 进程表项———————————————— fd标志 文件指针 _____________________fd 0:|________|_______... 阅读全文
posted @ 2009-07-09 18:26 SunBo 阅读(190) 评论(0) 推荐(0) 编辑

摘要: 在Linux内核中,经常会看到do{}while(0)这样的语句,许多人开始都会疑惑,认为do{}while(0)毫无意义,因为他只会执行一次,加不加do{}while(0)效果是完全一样的,其实do{}while(0)主要用于宏定义中。这里用一个简单点的宏来演示:#define SAFE_FREE(p) do { free(p); p = NULL; } while(0)假设这里去掉do...while(0),即定义SAFE_FREE为:#define SAFE_FREE(p) free(p); p = NULL;那么以下代码:if (NULL != p) SAFE_... 阅读全文
posted @ 2009-07-09 17:53 SunBo 阅读(252) 评论(0) 推荐(0) 编辑

摘要: 文件压缩和归档有时候,我们需要把一组文件贮存成一个文件以便备份或传输到另一个目录甚至另一个计算机上。有时候,我们还需要把文件压缩成一个文件,因而它们仅使用少量磁盘空间并能更快地通过互联网下载。理解归档文件(archive file)和压缩文件(compressedfile)间的区别对用户来说十分重要。归档文件是一个文件和目录的集合,而这个集合被贮存在一个文件中。归档文件没有经过压缩 —它所使用的磁盘空间是其中所有文件和目录的总和。压缩文件也是一个文件和目录的集合,且这个集合也被贮存在一个文件中,但是,它的贮存方式使其所占用的磁盘空间比其中所有文件和目录的总和要少。如果你在计算机上的磁盘空间不足 阅读全文
posted @ 2009-07-09 17:48 SunBo 阅读(345) 评论(0) 推荐(0) 编辑

摘要: calloc不同于malloc,是对所分配的内存初始化。测试程序如下:*****APUE中很重要的一句话:calloc将分配的内存空间初始化为0。但是ANSI C并不保证0值与浮点0或空指针的值相同。#include <stdlib.h>#include <stdio.h>#include <unistd.h>void calloc_int(void);void calloc_char(void);void calloc_float(void);void calloc_ptr(void);int main(){ calloc_int(); calloc_ch 阅读全文
posted @ 2009-07-09 17:30 SunBo 阅读(4384) 评论(0) 推荐(0) 编辑

摘要: 当我们的程序崩溃时,内核有可能把该程序当前内存映射到core文件里,方便程序员找到程序出现问题的地方。最常出现的,几乎所有C程序员都出现过的错误就是“段错误”了。也是最难查出问题原因的一个错误。下面我们就针对“段错误”来分析core文件的产生、以及我们如何利用core文件找到出现崩溃的地方。当一个程序崩溃时,在进程当前工作目录的core文件中复制了该进程的存储图像。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。当程序接收到以下UNIX信号会产生core文件:名字说明ANSI C POSIX.1SVR4 4.3+BSD缺省动作SIGABRT异常终止(abort). ... 阅读全文
posted @ 2009-07-09 17:22 SunBo 阅读(294) 评论(0) 推荐(0) 编辑

摘要: 一、工具准备 Apache Web服务器:httpd-2.2.4.tar.bz2 Subversion源码包及依赖包:subversion-1.4.3.tar.bz2 ,subversion-deps-1.4.3.tar.bz2 (下面假设apache和svn源码都解压到了/home/tmp下) 二、安装Apache Apache的安装就根平时安装Apache没什么两样,都记得要打开dav模块和动态模块选项。安装安装命令如下:引用 tar xfj httpd-2.2.4.tar.bz2 cd httpd-2.2.4 ./buildconf ./configure --enable-dav... 阅读全文
posted @ 2009-07-09 17:19 SunBo 阅读(163) 评论(0) 推荐(0) 编辑

摘要: —————————————————————————————————————— 非代码部分 ———————————————————————————————————————1. 对于有些用Secure CRT,在windows下面粘贴过来的代码,可以用Visual(在Vim下面按'v'),然后选中需要修改的代码,按"=",就可以使其对齐了。2. Vim由7.1升级成7.2, 导致Vim中backspace键失效,所以解决的办法就是在vimrc文件中加入如下代码: set backspace=indent,eol,start 如果还不行的话,可能还需要 set n 阅读全文
posted @ 2009-07-09 17:18 SunBo 阅读(275) 评论(0) 推荐(0) 编辑

摘要: 一、程序的内存空间一个典型的Linux C程序内存空间由如下几部分组成:代码段(.text)。这里存放的是CPU要执行的指令。代码段是可共享的,相同的代码在内存中只会有一个拷贝,同时这个段是只读的,防止程序由于错误而修改自身的指令。初始化数据段(.data)。这里存放的是程序中需要明确赋初始值的变量,例如位于所有函数之外的全局变量:int val=100。需要强调的是,以上两段都是位于程序的可执行文件中,内核在调用exec函数启动该程序时从源程序文件中读入。 未初始化数据段(.bss)。位于这一段中的数据,内核在执行该程序前,将其初始化为0或者null。例如出现在任何函数之外的全局变量:int 阅读全文
posted @ 2009-07-09 17:04 SunBo 阅读(138) 评论(0) 推荐(0) 编辑

摘要: Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 RGB 原理 RGB 是从颜色发光的原理来设计定的,通俗点说它的颜色混合方式就好像有红、绿、蓝三盏灯,当它们的光相互叠合的时候,色彩相混,而亮度却等于两者亮度之总和(两盏灯的亮度嘛!),越混合亮度越高,即加法混合。 有色光可被无色光冲淡并变亮。如蓝色光与白光相遇,结果是产生更加明亮的浅蓝色光。知道它的混合原理后,在软件中设定颜色就容易理解了。 ... 阅读全文
posted @ 2009-07-09 16:37 SunBo 阅读(387) 评论(0) 推荐(0) 编辑

2008年11月24日

摘要: 小马过河 阅读全文
posted @ 2008-11-24 09:39 SunBo 阅读(280) 评论(0) 推荐(0) 编辑

上一页 1 ··· 28 29 30 31 32