摘要:
不管Linux的IO模型的阻塞同步分类是如何分类,几种IO模型的具体实现是确定的。这里借用《Unix 网络编程:卷一》的图片说明。 1 阻塞式IO模型 这个模型也是最容易理解的 程序调用和我们基本的程序编写是一致的: fd = connect() write(fd) read(fd) close(fd) 程序的read必须在write之后执行,当write阻塞住了,read就不能执行下去 2 非阻塞IO模型 从图中可以看出来,这是一个轮询的过程 每次用户询问内核是否有数据报准备好(文件描述符缓冲区是否就绪),当数据报准备好的时候,就进行拷贝数据报的操作。当数据报没... 阅读全文
随笔档案-2012年05月
Unix家族编年史
2012-05-30 13:30 by 轩脉刃, 3705 阅读, 收藏, 编辑
摘要:
Unix是多用户、多任务的操作系统,它的历史悠久,也有多种版本。在Unix接触过程中常使用到的词,BSD,Linux等。初学者,甚至是接触unix很久的用户也未必对其家谱了如指掌。这篇文章描述的是Unix的族谱和发展历史。 1969年,Unix的前身Unics出现 作者: 肯·汤普逊(左)和丹尼斯·里奇(右) Unix版本是由美国电话电报公司(AT&T)进行维护升级的。他们两位是AT&... 阅读全文
Linux IO模型漫谈(1)
2012-05-29 11:20 by 轩脉刃, 3725 阅读, 收藏, 编辑
摘要:
基础知识 Linux将所有外部设备都看做一个文件来进行操作。因此,linux对所有外部设备的操作都可以看做是文件的操作。文件的操作当然需要有个标示描述它,这就是文件描述符(file descriptor)。 linux的IO操作如何形象理解呢? 我们说网络socket的read()是一个IO操作命令,具体流程是这样的: 应用程序调用read命令,通知内核需要做读取数据操作 内核创建一个文件描述符 内核从物理层收到读数据的命令,从网络中获取数据包 数据包传递到TCP/IP层,解析数据包的头 内核将数据包缓存在文件描述符的读缓存区(接受缓存区)中,注意这里的读缓存区是在内核中的 ... 阅读全文
Lua的协同程序
2012-05-28 15:39 by 轩脉刃, 10630 阅读, 收藏, 编辑
摘要:
Lua是一种简单,可扩展,可移植及高效的脚本语言。在嵌入式系统,移动设备,web服务器,游戏等方面都能见到它的身影。lua其中最吸引人的一点事它能很方便地与C语言或者其他语言。 这里说的是lua语言中的协同程序(coroute),也有人翻译成为协作程序 基本函数和语法 coroutine就是lua的协同程序 先讲一下coroutine的语法: coroutine.create() 创建coroutine,返回coroutine, 参数是一个函数,当和resume配合使用的时候就唤醒函数调用 coroutine.resume() 重启coroutine,和create配合使用... 阅读全文
Windows Live Writer插件开发
2012-05-13 19:07 by 轩脉刃, 1921 阅读, 收藏, 编辑
摘要:
WLW(windows live writer)是我在博客园发博客必用的博客编写工具。它的插件编写就是WindowsLive.Writer.Api接口的使用,接口API文档在MSDN上有 。如果你有时间,可以按照文档的教程一步步学习。 这里就照着一个插件的实现步骤进行记录: 需求说明 开发准备 开发步骤 参考文章 需求说明 需求:将文章中的<h1></h1>标题自动生成目录,并插入到... 阅读全文
nginx模块_使用gdb调试nginx源码
2012-05-10 16:45 by 轩脉刃, 19318 阅读, 收藏, 编辑
摘要:
工欲善其事必先利其器,如何使用调试工具gdb一步步调试nginx是了解nginx的重要手段。 ps:本文的目标人群是像我这样初接触Unix编程的同学,如果有什么地方错误请指正。 熟悉gdb的使用 这里就不说了,谷歌一搜一堆,这里推荐一篇文章:GDB 命令详细解释 请重点看一下step,run,break,list,info,continue命令 下载nginx源码 这里使用nginx-1.0.14 src是源代码,auto文件夹是configure运行时候的各种命令集合 修改config并编译 由于gdb需要gcc的时候加上-g参数,这样生成的文件才能使用gdb调试,因此... 阅读全文
UltraEdit高级使用技巧
2012-05-02 17:22 by 轩脉刃, 19898 阅读, 收藏, 编辑
摘要:
UltraEdit是众多IDE中颇有亮点的一款,它功能强大,这里说一下它的一些很好用的功能。 列模式 很多人喜欢上UltraEdit最初就是由于它的列模式。 进入列模式: Alt + C 如何对多个行进行注释 1 进入列模式 2 选定多个行 3 增加注释符 计算列的多个数的和 1 进入列模式 2 选择统计的列 3 列 -- 列选择统计 更多列模式的操作可以参考这里 UltraEdit中的脚本 脚本只支持ASCII/ANSI files编码,UTF-8是会出错的 几个常用的命令 var str = UltraEdit.ge... 阅读全文