
Linux/Unix
文章平均质量分 72
vvuyve
主博客http://www.cnblogs.com/wuyuegb2312/
展开
-
Linux编译内核实验小结
近日按照《Linux内核的设计与实现》尝试编译内核,遇到很多问题,也学到不少经验。 1. 由于需要使用一个较老版本的内核,而后从别人处拷贝的tag.bz2是损坏的。原先并没有在http://www.kernel.org/看到所需要的内核,通过搜索知道较旧的内核可以从类似于http://www.kernel.org/pub/linux/kernel/v2.6/命名规则的页面下载。2.原创 2013-05-22 21:00:58 · 1222 阅读 · 0 评论 -
编写一个make
本文介绍如何编写一个简单的make而非如何编写makefile。通过分析makefile的格式提取其中的文件依赖的处理并存放到数据结构,简单介绍了make使用的时间戳,并使用DFS完成是否存在环和是否需要重新编译的判断,从而提供make的基本功能。源代码已托管至https://github.com/vvy/wmake。原创 2013-11-22 17:40:10 · 1026 阅读 · 0 评论 -
手把手教你编写一个具有基本功能的shell(已开源)
本文一步一步地教你如何编写一个具有基本功能的shell,特点是由简单到复杂,逐步添加新的特性,注重思路的展示而不是代码的堆砌,因而不会直接呈现一个完善的版本;同时练习相关的Linux的API,有助于破除对shell的神秘感。源码托管在:https://github.com/vvy/wshell原创 2013-11-03 13:12:11 · 2416 阅读 · 0 评论 -
unix的malloc/free函数的简单实现及思考
用于内存管理的malloc/free这对函数,对于使用C语言的程序员应该很熟悉。前段时间听说有的IT公司以“实现一个简单功能的malloc”作为面试题,正好最近在复习K&R,上面介绍了使用UNIX接口的实现,因此花了些时间仔细研究了一下。毕竟把题目做出来是次要的,了解实现思想、提升技术才是主要的。本文主要是对malloc/free实现思路的介绍,蓝色部分文字是在个人思考中觉得比较核心的东西;另外对原创 2013-05-25 12:42:05 · 2149 阅读 · 0 评论 -
《深入理解Nginx》阅读与实践(二):配置项的使用
以前文的HelloWorld为基础进行修改,将其变成读取nginx.conf配置项并输出的程序。帮助读者理清在读取配置项时,存储用数据结构ngx_http_mytest_conf_t、初值生成方法create_loc_conf()、解析方法数组ngx_command_s[]和合并方法merge_loc_conf()的工作方式和联系。原创 2013-08-14 21:53:57 · 983 阅读 · 0 评论 -
[小技巧]grep匹配形如-x的文本
比如想在gcc手册里找-o选项对应的解释,如果man gcc | grep -o,grep会把-o当做自己的命令选项,是得不到正确结果的。 如果想得到正确结果,把待查的-o扩展成*-o就行了,不过这时需要给grep加上-E选项,所以最终的实例为:man gcc |grep -E *-o原创 2013-06-05 17:28:28 · 889 阅读 · 0 评论 -
linux中随手可得的测试、调试、性能检验工具
原定标题是“linux自带的测试、调试、性能工具”,不过并不恰当,比如本文要提到的gdb,很多Linux发行版中都提供了它,但毕竟不是Linux的必要组成部分,只是对与大多数Linux用户随手可得罢了。合理组合使用这些工具可以满足更复杂的要求,并写成测试脚本,能为测试提供很大的方便。本文不涉及具体的脚本编写,也不涉及与网络相关的命令如netstat和tcpdump。 为了方便阅读,用横线原创 2013-06-13 22:49:01 · 1001 阅读 · 0 评论 -
使用Xshell连接Ubuntu
Xshell是一个安全终端模拟软件,可以进行远程登录。我使用XShell的主要目的是在Windows环境下登录Linux终端进行编码,非常方便。本文简单介绍下它的使用方法。1.下载后在安装时选择个人/学校免费版即可。2.安装完毕后先在要连接的Ubuntu主机下开启SSH服务,如果没有开启需要安装openssh-server:sudo apt-get install openssh-原创 2013-05-22 21:01:44 · 1408 阅读 · 0 评论 -
Ubuntu下OpenCV的安装和QT调用openCV库的方法
我在网上查找安装方法时有两种方式,第一种方案在第三步测试的时候没有成功,不知道问题出在哪里,换用了第二种方式。如果直接用第二种方式安装不成功,可以试试进行第一种方式的第2步。 安装环境是Ubuntu 10.04,内核版本2.6.32.22。OpenCV版本为2.4.3。第一种方式,参考自:http://www.opencv.org.cn/index.php/Debian%E4%B8%8B原创 2013-05-22 21:01:35 · 775 阅读 · 0 评论 -
Linux信号量操作次数的探究
需求源于项目中一部分设计的代码。struct semaphore类型的信号量,使用up()进行释放,down_interruptible()和down()获得指定信号量(前者中,若该信号量已争用则进入可中断睡眠,后者进入不可中断睡眠)。 理想中的流程应该是线程调用down()阻塞一个信号量,等待另一个线程调用up()释放,从而实现同步。但如果另一个线程使用up()释放多次,会有怎样的结果呢?原创 2013-05-22 21:01:14 · 726 阅读 · 0 评论 -
利用模块添加系统调用(不重新编译内核)
其实用这个标题随便baidu、Google出来都是一大堆,大部分都是转来转去,代码无非那么几种。可是真正编译通过还是费了不少功夫,我在双系统的Ubuntu10.04和虚拟机里的Red Hat9里来来回回不知折腾了多少次。所以本文更多的是记录下自己调试的细节,而不是简单的粘代码和转载。 目的是在不重新编译内核的前提下添加系统调用,思路倒是很简单,修改映射在内存中的系统调用表,把一个空闲的系统调原创 2013-05-22 21:01:01 · 1206 阅读 · 0 评论 -
epoll学习和回显服务器实现(C语言版)
select提供的轮询会随着fd数目的增长降低效率,并且其上限是系统定义过的。UNP上select的例子需要编程者自己维护一个fd使用情况的结构,很抽象繁琐。后面的poll的例子和本文提到的epoll使用方法差不多,这是因为高级polling技术没有标准,各个操纵系统的实现不一样,而epoll是由Linux提供的,是对poll的改进。个人感觉区别在于epoll对缓冲池的维护(事件的加入和维护)更简原创 2013-05-22 21:00:56 · 671 阅读 · 0 评论 -
Linux下Matlab的安装和中文显示支持
安装方法:(参考自http://blog.youkuaiyun.com/abee23/article/details/7391859,很详细,下面的整理只为存档)1.下载$cd ~/Download$mkdir matlab$cd matlab$wget -c http://math.whut.edu.cn/shumo/special/msoft/mac/matlab_unix_2原创 2013-05-22 21:01:32 · 1042 阅读 · 0 评论 -
交叉编译生成模块的makefile写法
以S3C6410为例,此时arm-none-linux-gnueabi-4.3.2已经安装完毕。 首先把和板子上烧写的内核同样的内核源码放置到任意目录下,如/usr/src/s3c-linux-2.6.28.6-Real6410。(内核源码需要配置,而板子附带CD上一般是配置好的,在上面修改简单一些) 进行make或./build。遇到了报错,找不到XX文件。查看了一下,指定目录下是有原创 2013-05-22 21:01:16 · 687 阅读 · 0 评论 -
EXPORT_SYMBOL的使用并以使用do_adjtimex调节内核tick_length(滴答长度)为例的说明
EXPORT_SYMBOL出现于2.6内核,可以把内核中的函数导出到全局符号表供其他内核模块(包括用户自己写的内核模块)使用。有个限制是,这个导出的符号不能是static类型。由于需要使用内核的do_adjtimex()函数进行tick_length的调节,而这个函数在/kernel/time/ntp.c中,这里便以此为例。 首先需要在函数定义后加入“EXPORT_SYMBOL(do_adj原创 2013-05-22 21:01:12 · 1286 阅读 · 0 评论 -
gdb调试命令
// <![CDATA[$(document).ready(function(){ createContent("cnblogs_post_body","H2","H3",20);});// ]]> 本文主要参考自:http://www.cnblogs.com/zzx1045917067/archive/2012/12/26/2834310.html,进行了一点原创 2013-05-22 21:01:46 · 1155 阅读 · 0 评论 -
再读Socket编程——《UNIX网络编程(卷一)》学习点滴
原先曾以Socket编程为入口开始自己的新的学习,毕竟未曾致用,时至今日已比较生疏。借着阅读《UNIX网络编程(卷一)》(简称UNPv1)的机会,正好复习一番,而且希望将新的感受记录下来。一些技术细节翻阅原书即可,点到为止,不在这篇博文详述。 作者推荐在网络编程中使用snprintf()代替sprintf()、用fget()、strncat()和strncpy()分别代替gets()、原创 2013-05-22 21:01:05 · 778 阅读 · 0 评论 -
通过对inode的修改对文件操作进行扩充
在open、read、write的参数中,mode的接口提供的比较方便,通过对fs/namei.c中vfs_create()中添加判断,解除对高位的事后修改就能传入到文件的i_mode。然而i_mode各个位基本已被使用完毕,使用新的组合的mode可能会将这一类文件变为“古怪的文件”,虽然能用open()、read()、write()进行操作,但是不能用vi等工具打开,原因可能是没有针对这种mod原创 2013-05-22 21:01:03 · 1429 阅读 · 0 评论 -
《现代操作系统》精读与思考笔记 第一章 引论
本系列博文是《现代操作系统》(Modern Operating Systems)的阅读笔记,定位是正文精要部分的摘录和课后习题精解,因此不会事无巨细的全面摘抄,仅仅根据个人情况进行记录和推荐。本节重点介绍:系统调用的发生过程、shell的基本原理、link原理等。原创 2013-11-02 18:55:58 · 1872 阅读 · 0 评论