![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Unix/Linux Programming
文章平均质量分 77
littlehedgehog
软件就像性,还是免费的比较好.....
展开
-
编写 find
编写find刺猬@http://blog.csdn.net/littlehedgehog去年做的一个小搜索是win32的,这次回头看看windows SDK的代码,不得不承认windows 在API的设计上封装的很复杂,unix上逻辑上很清晰的代码在windows上看得有些让人摸不着头脑。#include #include #include #include #include int chec原创 2008-09-06 17:38:00 · 892 阅读 · 0 评论 -
clamav杀毒软件源码分析笔记[一]
clamav杀毒软件源码分析笔记[一]刺猬@http://blog.csdn.net/littlehedgehog注: 《clamav杀毒软件源码分析笔记》只是我在阅读《linux安全体系分析与编程》中“clamav杀毒应用程序”有关章节的读书笔记而已。还望各位看官高抬贵手,不要当做学习资料来作为入门读物,这就贻笑大方了, Clamav我是选用的0.85版. 另外,限于我不是从事专门研究杀毒原创 2008-10-07 18:12:00 · 8522 阅读 · 2 评论 -
Clamav杀毒软件源码分析笔记[二]
Clamav杀毒软件源码分析笔记[二]刺猬@http://blog.csdn.net/littlehedgehog[读取命令行参数]开始正儿八经地分析源码了. 从哪里入手呢,当然还是按照书上的来,我们先来看看Clamd的程序如何从生到死,Clamd是杀毒软件的服务端,我们在客户端提交要查杀的信息,然后Clamd服务端进行按照我们指令办事,然后把结果返回给我们。这个貌似是unix程序的一个经原创 2008-10-07 18:38:00 · 5540 阅读 · 0 评论 -
Clamav杀毒软件源码分析笔记[三]
Clamav杀毒软件源码分析笔记[三]刺猬@http://blog.csdn.net/littlehedgehog[获取配置文件信息]说来比较打击积极性的是我们还得做一番比较麻烦的但是却又没多少挑战性的事业,因为如果clamd这个服务端全部都用命令行来指定信息的话,Clamav估计会没有市场,因为打字就会累死管理员。我们要设置比如像多久升级一次啊,升级服务器在哪里下载这些东西这些乱七八糟的原创 2008-10-07 19:28:00 · 8514 阅读 · 0 评论 -
Clamav杀毒软件源码分析笔记[四]
Clamav杀毒软件源码分析笔记[四]刺猬@http://blog.csdn.net/littlehedgehog[进程后台化]话说Clamd前期准备工作安排好以后,遂转入幕后运作,争取垂帘听政. 关于进程的后台化,《linux安全体系分析与编程》貌似说的条条是理,不过我这里还得重复一遍,当年辛辛苦苦找的资料可不能浪费了。 /* fork into background 如果配置文件中原创 2008-10-07 20:11:00 · 9212 阅读 · 0 评论 -
Clamav杀毒软件源码分析笔记[六]
Clamav杀毒软件源码分析笔记[六]刺猬@http://blog.csdn.net/littlehedgehog[线程处理]我曾经说过Clamd强大的动力并不是来自于某些催情药的功用,而是内部提供的线程池功能功不可没.所谓线程池,我理解是暂时收容工作完成的线程,派发工作给无所事事的线程,这样可以让线程有暂时的不死之身,一直存在于内存之中.这样避免了频繁地创建线程,销毁线程.先来看看所谓线原创 2008-10-07 20:56:00 · 9953 阅读 · 1 评论 -
Clamav杀毒软件源码分析笔记[五]
Clamav杀毒软件源码分析笔记[五]刺猬@http://blog.csdn.net/littlehedgehog[Socket通信]套间字socket常用于服务/客户模型的应用程序之间的通信和数据连接,需要重点关注的是这个所谓的服务端/客户端完全可以是一台计算机的两个应用程序。前面我们已经提到了,Clamd就是这个服务端,也就是说它是整个程序的顶梁柱,所有的关键逻辑处理都是它一人为之,不原创 2008-10-07 20:27:00 · 10129 阅读 · 0 评论 -
Clamav杀毒软件源码分析笔记[七]
Clamav杀毒软件源码分析笔记[七]刺猬@http://blog.csdn.net/littlehedgehog[accept循环处理]上次本来可以在文章五把Clamd的主要函数说完的,不过线程未了,火候未到. 这次火候到了,Clamd的尽头也就走到底了. if ((thr_pool=thrmgr_new(max_threads, idletimeout, scanner_threa原创 2008-10-07 22:16:00 · 8848 阅读 · 0 评论 -
Clamav杀毒软件源码分析笔记[八]
Clamav杀毒软件源码分析笔记[八]刺猬@http://blog.csdn.net/littlehedgehog[command]上回说到主循环(accept_th),这是一个死循环,因为我们Clamd在没有什么特殊的情况下是一直阻塞地苦苦等待在等待有客户端发出请求,然后安排好线程派发(dispatch)工作,接着我们的注意力便专注于线程的运作,这里的command是我们的重点研究对象.说来原创 2008-10-08 18:57:00 · 9280 阅读 · 0 评论 -
Clamav杀毒软件源码分析笔记[九]
Clamav杀毒软件源码分析笔记[九]刺猬@http://blog.csdn.net/littlehedgehog[数据流病毒扫描]数据流病毒扫描,听上去貌似很牛逼的称呼,其实就是一个传送数据流,接收数据流,扫描病毒而已. 貌似扫描病毒代码亦是很牛逼的代码,其实也不然,不过调用扫描病毒的引擎API函数尔. 调API调久了,自然想去看看这个API究竟怎么回事,于是乎就去看kernel代码了,想刚原创 2008-10-08 20:02:00 · 9565 阅读 · 0 评论 -
Clamav杀毒软件源码分析笔记[十]
Clamav杀毒软件源码分析笔记[十]刺猬@http://blog.csdn.net/littlehedgehog[客户端处理]服务端已经把主要的工作都已经处理的差不多了,剩下来也就是服务端等待客户端提出请求,然后根据客户端的请求做相应的工作. 所以客户端所做的事情就只是提交数据,然后坐享其成.服务端是在垂帘听政呢,还是做幕后英雄?话不多说了,下面进入正题.客户端(clamdscan)的主函数原创 2008-10-13 21:13:00 · 8404 阅读 · 1 评论 -
给UDP增加可靠性
给UDP增加可靠性刺猬@http://blog.csdn.net/littlehedgehog UNP里面的例子程序,把计算rtt的算法改了下,参考的TCP/IP详解里面介绍的一个稍微简单的算法,另外,不喜欢setjmp这种编程模式,感觉程序代码可读性较差,最后还是改成使用pselect+signal,这样代码会清晰些。 下面是主函数 #in原创 2009-02-17 10:58:00 · 9438 阅读 · 0 评论 -
IP_RECVDSTADDR undefined
IP_RECVDSTADDR undefined刺猬@http://blog.csdn.net/littlehedgehog今天写一个unp上面的例子程序,被IP_RECVDSTADDR undefined难倒了,gcc老是报错说该宏未定义,最后还是在老外的一个“开源苹果”网站查到原来linux修改了相关的函数定义,包括cmsghdr及setsockopt都采用了lin原创 2009-02-15 19:06:00 · 10580 阅读 · 1 评论 -
异步信号安全和线程安全
异步信号安全和线程安全 刺猬@http://blog.csdn.net/littlehedgehog 问题源自于apue中stevens老先生有关线程安全函数的介绍,stevens有曰:如果一个函数对于多线程来说是重入的,则说这个函数是线程安全的,但这并不能说明对信号处理程序来说也是重入的。也就是说信号安全重入函数要求要比线程安全更加严格。但是,我想知道为什么,为什么线原创 2009-04-23 18:40:00 · 10726 阅读 · 4 评论 -
linux多线程扫描器
linux多线程扫描器刺猬@http://blog.csdn.net/littlehedgehog那个深入浅出驱动程序系列文章后面作者似乎有些心不在焉,文章草草了事,还是自己来看看相关的书吧。再来说说这个scanner,速度还是过得去的,在我测试的环境中,跟nmap速度不相上下,不过郁闷的是扫描主机比较慢。说来其实没多大实用价值,仅供学习参观之用。代码就在下面,有兴趣自己可以改改用。#incl原创 2008-09-27 15:01:00 · 1493 阅读 · 0 评论 -
深入浅出Linux设备驱动之并发控制
深入浅出Linux设备驱动之并发控制刺猬@http://blog.csdn.net/littlehedgehog注:该系列文章转载自arm+linuxchinaunix博客圈圈主之博客——http://blog.chinaunix.net/u/22630/article_54997.html 为了适合我的编译环境,源代码有改动,但是相信我更改后的代码更加适合现在大多数读者的pc环境原创 2008-09-20 20:43:00 · 1236 阅读 · 0 评论 -
深入浅出Linux设备驱动编程之内核模块
深入浅出Linux设备驱动编程之内核模块刺猬@http://blog.csdn.net/littlehedgehog 注: 该系列文章转载自arm+linux chinaunix博客圈圈主之博客——http://blog.chinaunix.net/u/22630/article_54997.htmlLinux设备驱动属于内核的一部分,Linux内核的一个模块可以以两种方式被编译和加载:(1)原创 2008-09-19 21:37:00 · 1865 阅读 · 0 评论 -
编写 ls
编写 ls刺猬@http://blog.csdn.net/littlehedgehog这几天加紧把这本《Understanding Unix/Linux Programming》看完,主要是为了熟悉下linuxAPI 的调用,上学期读linux 0.11版代码其实就吃了这个亏,不熟悉API,导致阅读代码比较困难。暂时把linux2.4内核代码的研究放一放。还记得上次做windows API 也原创 2008-09-05 17:07:00 · 961 阅读 · 0 评论 -
sscanf 用法示例
sscanf刺猬@http://blog.csdn.net/littlehedgehog开始一直不理解sscanf的用法,在教室里看书,没有网可上,就一直来猜这个函数作用,不过也猜得八九不离十了。回头来网上看看,没想到sscanf的作用这么强大。而且它的兄弟sprintf 我一直在用,呵呵,咋就没想到他还有个弟弟呢?sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输原创 2008-09-09 19:04:00 · 1065 阅读 · 0 评论 -
自己动手写basic解释器(五)
自己动手写basic解释器刺猬@http://blog.csdn.net/littlehedgehog 注: 文章basic解释源码摘自梁肇新先生的《编程高手箴言》(据他所说这个代码也是网上摘录的),源码解读参考《java编程艺术》。《java编程艺术》里面自然是java版了(可能旭哥更加适合点儿),我这里还是解读的C版basic解释器代码。是所谓先来后到,我们还是按照主函数出现的顺序原创 2008-09-14 21:58:00 · 3347 阅读 · 2 评论 -
编写shell(二)
编写shell刺猬@http://blog.csdn.net/littlehedgehog接着来写shell,今天来加上我们的条件判断语句if。为了处理if的逻辑判断,我们这里把代码区域做个划分。如下举例所示:who ls -al if diff file1 file2 ---------------以上是中立区 netralthen ---------------want_the原创 2008-09-13 19:16:00 · 1698 阅读 · 0 评论 -
自己动手写basic解释器(二)
自己动手写basic解释器刺猬@http://blog.csdn.net/littlehedgehog 注: 文章basic解释源码摘自梁肇新先生的《编程高手箴言》(据他所说这个代码也是网上摘录的),源码解读参考《java编程艺术》。《java编程艺术》里面自然是java版了(可能旭哥更加适合点儿),我这里还是解读的C版basic解释器代码。上次我们把程序装载入内存,这里我们开始做词法分析了。原创 2008-09-14 17:12:00 · 5547 阅读 · 4 评论 -
自己动手写basic解释器(四)
自己动手写basic解释器刺猬@http://blog.csdn.net/littlehedgehog 注: 文章basic解释源码摘自梁肇新先生的《编程高手箴言》(据他所说这个代码也是网上摘录的),源码解读参考《java编程艺术》。《java编程艺术》里面自然是java版了(可能旭哥更加适合点儿),我这里还是解读的C版basic解释器代码。表达式已求,下面可以进入程序逻辑处理了,这里的代码量原创 2008-09-14 20:38:00 · 3477 阅读 · 0 评论 -
自己动手写basic解释器(六)
自己动手写basic解释器刺猬@http://blog.csdn.net/littlehedgehog 注: 文章basic解释源码摘自梁肇新先生的《编程高手箴言》(据他所说这个代码也是网上摘录的),源码解读参考《java编程艺术》。《java编程艺术》里面自然是java版了(可能旭哥更加适合点儿),我这里还是解读的C版basic解释器代码。4、for接着看for,for循环这里借助了栈来实原创 2008-09-14 22:25:00 · 3168 阅读 · 0 评论 -
编写简单多线程web服务器
编写简单多线程web服务器 刺猬@http://blog.csdn.net/littlehedgehog下面的原理解释参照《一个多线程web服务器实例(C,Linux,详细的web服务器原理)》 一文:原理:在浏览器中输入一个网址,回车之后,浏览器会向相应主机的相应端口发送一段报文,如果是http协议的(如平常看到的网页的传输协议),就会发送HTTP请求报文。下面是一个报文的例子:GET /i原创 2008-09-12 15:05:00 · 2783 阅读 · 0 评论 -
自己动手写basic解释器(三)
自己动手写basic解释器刺猬@http://blog.csdn.net/littlehedgehog 注: 文章basic解释源码摘自梁肇新先生的《编程高手箴言》(据他所说这个代码也是网上摘录的),源码解读参考《java编程艺术》。《java编程艺术》里面自然是java版了(可能旭哥更加适合点儿),我这里还是解读的C版basic解释器代码。经过get_token,我们可以获取一个标识符,按理原创 2008-09-14 19:44:00 · 3842 阅读 · 0 评论 -
自己动手写basic解释器(一)
自己动手写basic解释器刺猬@http://blog.csdn.net/littlehedgehog注: 文章basic解释源码摘自梁肇新先生的《编程高手箴言》(据他所说这个代码也是网上摘录的),源码解读参考《java编程艺术》。《java编程艺术》里面自然是java版了(可能旭哥更加适合点儿),我这里还是解读的C版basic解释器代码。那些客套话咱就不扯原创 2008-09-14 16:14:00 · 15100 阅读 · 1 评论 -
自己动手写basic解释器(七)
自己动手写basic解释器刺猬@http://blog.csdn.net/littlehedgehog 注: 文章basic解释源码摘自梁肇新先生的《编程高手箴言》(据他所说这个代码也是网上摘录的),源码解读参考《java编程艺术》。《java编程艺术》里面自然是java版了(可能旭哥更加适合点儿),我这里还是解读的C版basic解释器代码。终于把这个basic解释器主干源码解述完了。其实说原创 2008-09-15 13:16:00 · 7382 阅读 · 6 评论 -
深入浅出Linux设备驱动之字符设备驱动程序
深入浅出Linux设备驱动之字符设备驱动程序刺猬@http://blog.csdn.net/littlehedgehog注: 该系列文章转载自arm+linux chinaunix博客圈圈主之博客——http://blog.chinaunix.net/u/22630/article_54997.html 为了适合我的编译环境,源代码有改动,但是相信更加适合现在大多数读者的环境。Linux下原创 2008-09-20 19:15:00 · 1177 阅读 · 0 评论 -
深入浅出Linux设备驱动之阻塞与非阻塞
深入浅出Linux设备驱动之阻塞与非阻塞刺猬@http://blog.csdn.net/littlehedgehog注:该系列文章转载自arm+linuxchinaunix博客圈圈主之博客——http://blog.chinaunix.net/u/22630/article_54997.html 为了适合我的编译环境,源代码有改动,但是相信我更改后的代码更加适合现在大多数读者的p原创 2008-09-20 21:25:00 · 1361 阅读 · 0 评论 -
孤儿进程组
为什么有"孤儿进程组"刺猬@http://blog.csdn.net/littlehedgehog 学习最忌讳的是等把所有内容都自以为学到手后,才突然慌神地反问自己“学这个是干什么的?”“这个究竟有什么用”。如果学一门学问到最后都不知道有什么用那最好别忙学,先看看它究竟在实际中运用到那些地方。中国教育大部分时间都是在教学生如何解题,所以当高数学了一学年最后吭哧吭哧考了个优后,竟然原创 2009-04-23 20:55:00 · 8118 阅读 · 0 评论