摘要: 功能最强大的编辑器之一——vivi是所有UNIX系统都会提供的屏幕编辑器,它提供了一个视窗设备,通过它可以编辑文件。当然,对UNIX系统略有所知的人,或多或少都觉得vi超级难用,但vi是最基本的编辑器,所以希望读者能好好把它学起来,以后在UNIX世界里必将畅行无阻、游刃有余,因为其他几种文本处理器并非UNIX标准配备。说不定别人的Linux机器没安装joe或pico,如果您不会vi,那您可能就没辄了。vi的基本概念基本上vi可分为三种操作状态,分别是命令模式(Command mode)、插入模式(Insert mode)和底线命令模式(Last line mode),各模式的功能区分如下:1. 阅读全文
posted @ 2010-03-23 13:14 Avril 阅读(79807) 评论(0) 推荐(2) 编辑
摘要: 1.linux系统调用的基本原理 linux的系统调用形式与POSIX兼容,也是一套C语言函数名的集合。然而,linux系统调用的内部实现方式却与DOC的INT 21H相似,它是经过INT 0X80H软中断进入后,再根据系统调用号分门别类地服务。 从系统分析的角度,linux的系统调用涉及4个方面的问题。 (1)与系统调用有关的数据结构和函数 函数名以“sys_”开头,后跟该系统调用的名字。例如,系统调用fork()的响应函数是sys_fork()(见Kernel/fork.c),exit()的响应函数是sys_exit()(见kernel/fork.c)。 文件include/asm/... 阅读全文
posted @ 2010-03-23 12:56 Avril 阅读(593) 评论(0) 推荐(0) 编辑
摘要: 本文是基于2.6的内核,也建议各位可以先看一下《Linux内核设计与实现(第二版)》作为一个基础知识的铺垫。当然,从实践角度来看,只要按着以下的步骤去做也应该可以实现成功编译内核及加载模块。个人用的Linux版本为:Debian GNU/Linux,内核版本为:2.6.20-1-686.第一步,下载Linux内核的源代码,即构建LDD3(Linux Device Drivers 3rd)上面所说的内核树。如过安装的Linux系统中已经自带了源代码的话,应该在/usr/src目录下。如果该目录为空的话,则需要自己手动下载源代码。下载代码的方法和链接很多,也可以在CU上通过http://downl 阅读全文
posted @ 2010-03-23 00:27 Avril 阅读(4716) 评论(0) 推荐(0) 编辑
摘要: 摘要:本节将介绍进程的定义。进程作为构成系统的基本细胞,不仅是系统内部独立运行的实体,而且是独立竞争资源的基本实体。了解进程的本质,对于理解、描述和设计操作系统有着极为重要的意义。了解进程的活动、状态,也有利于编制复杂程序。 1.进程的基本概念 首先我们先看看进程的定义,进程是一个具有独立功能的程序关于某个数据集合的一次可以并发 执行的运行活动,是处于活动状态的计算机程序。进程作为构成系统的基本细胞,不仅是系统内部独立运行的实体,而且是独立竞争资源的基本实体。了解进程的本 质,对于理解、描述和设计操作系统有着极为重要的意义。了解进程的活动、状态,也有利于编制复杂程序。 1.1 进程状... 阅读全文
posted @ 2010-03-22 17:44 Avril 阅读(2951) 评论(0) 推荐(0) 编辑
摘要: argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数是命令行后面跟的用户输入的参数,比如: 1 int main(int argc, char* argv[]) 2 { 3 int i; 4 for (i = 0; i<argc; i++) 5 cout 阅读全文
posted @ 2010-03-22 11:53 Avril 阅读(280165) 评论(17) 推荐(37) 编辑
摘要: GCC使用在使用GCC编译程序时,编译过程可以被细分为四个阶段:预处理(Pre-Processing)编译(Compiling)汇编(Assembling)链接(Linking)。例如: #include int main(void){ printf ("Hello world, Linux programming!\n"); return 0;} 然后执行下面的命令编译和运行这段程序:# gcc hello.c -o hello#./helloHello world, Linux programming! GCC需要调用预处理程序cpp,由它负责展开在源文件中定义的宏,并 阅读全文
posted @ 2009-12-06 12:02 Avril 阅读(20503) 评论(0) 推荐(1) 编辑
摘要: 一、VirtualBox在winxp下虚拟ubuntu在winxp下虚拟ubuntu,在ubuntu下访问win的共享文件夹时出现如下错误:/sbin/mount.vboxsf: mounting failed with the error: No such device1,若要使用共享文件夹功能,必须安装linux guest additions,安装增强功能,这一步得注意不然没戏2,lsmod | grep vboxvfs,确保加载了vboxvfs模块,若没有,使用sudo modprobe vboxvfs加载3,新建一个文件夹,sudo mkdir /home/js/dxn4,sudo 阅读全文
posted @ 2009-10-09 18:25 Avril 阅读(5207) 评论(0) 推荐(0) 编辑
摘要: 测试驱动开发(TDD)是以测试作为开发过程的中心,它坚持,在编写实际代码之前,先写好基于产品代码的测试代码。开发过程的目标就是首先使测试能够通过,然后再优化设计结构。测试驱动开发式是极限编程的重要组成部分。XUnit,一个基于测试驱动开发的测试框架,它为我们在开发过程中使用测试驱动开发提供了一个方便的工具,使我们得以快速的进行单元测试。XUnit的成员有很多,如JUnit,PythonUnit等。今天给大家介绍的CppUnit即是XUnit家族中的一员,它是一个专门面向C++的测试框架。 本文不对CppUnit源码做详细的介绍,而只是对CppUnit的应用作一些介绍。在本文中,您将看到:1、C 阅读全文
posted @ 2009-08-14 18:52 Avril 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 事件,用event修饰符来代表一个事件,我们要创建一个c#事件必须按以下顺序来扫行:1,创建或标识一个代表。比如下例中的 public delegate void dele(); //声明代表,delegate 关键字通知编译器 dele 是一个委托类型2,创建一个包含事件处理代表,调用事件处理代表的方法的类,如下例public class EventClass1 : IEvents //IEvents,是下面我们要讲一接口{ public event dele event1;//定义事件成员event1 public void FireEvent() //当事件发生时{ event1(); 阅读全文
posted @ 2009-08-14 09:34 Avril 阅读(356) 评论(0) 推荐(0) 编辑
摘要: 1.单线程的定时器存在很多问题,定时器只是定时把消息WM_TIMER访到线程的消息队列里,但并不保证消息会立即被响应,如果碰巧系统比较忙,消息可能会在队列里放一段时间才被响应,这样会造成本来应该间隔一段时间发生的消息连续发生了。2. 。NET FrameWork带来了新的解决方案Server TimersSystem.Timers.Timer基于服务器的计时器,位于"工具箱"的“组件”选项卡上Thread TimersSystem.Threading.Timer在编程时使用的线程计时器Windows TimersSystem.Windows.Forms.Timer基于 Wi 阅读全文
posted @ 2009-08-13 16:10 Avril 阅读(14220) 评论(1) 推荐(3) 编辑