如何mock系统调用

背景​   Linux下开发存储系统、网络库的时候会用到一系列Linux的系统调用,每一个系统调用都有一些出错的场景,有些场景很极端,比如内存使用达到上限、磁盘写满等,如果对其进行测试的话,很难去构造这样的一个场景,这个时候集成测试就显得力不存心了,只能靠单元测试来覆盖这些场景。现在的问题就是如何去mock这些系统调用,然后通过程序返回对应场景的错误码来模拟各种场景。也就是将对系统函数的依赖注入到程...
阅读(56) 评论(1)

工作日记

GitHttp   POST data时是否要url encode,这取决于POST数据时带的header,如果是application/x-www-form-urlencoded 这是需要进行url encode的,这也是默认行为,如果是 multipart/form-data就不需要进行url encode,url encode的时候只需要encode value部分即可,key部分用户自己已经...
阅读(127) 评论(0)

程序的机器级表示

2017年4月趁着临近毕业时间比较充裕,就买了一本深入理解计算机系统(第三版),这本书的第二版之前浅浅的读过一遍只对里面的编译与链接章节印象深刻,其他章节对我来说完全陌生,我深知这本书的好,于是重新拾起这本书。为了加深自己的记忆就开始写博客记录自己的读书笔记。 第三章 程序的机器级表示 gcc4.8 引入-Og选项,使得生成的代码更符合原始程序的结构。 传送类指令的两个操作数不能指向内存位置。 任何...
阅读(225) 评论(0)

[置顶] 可重入、线程安全和异步信号安全

什么是可重入?关于可重入和不可重入这些概念网上可以找到很多,本人表达能力欠佳,所以在此处引用别人的话对这两个概念做一个简单的介绍: 在多线程或有异常控制流的情况下,当某个函数运行到中途时,控制流(也就是当前指令序列)就有可能被打断而去执行另一个函数. 如果在这种情况下不会出现问题,比如说数据或状态不会被破坏,行为确定。那么这个函数就被称做”可重入”的.函数是可重入(reentrant)的,是指对...
阅读(418) 评论(0)

Makefile笔记

入门Makefile的核心和主线是下面这条规则target: prerequisties commandtarget是个目标,是要生成的文件,也可以只是单纯的一个名称(伪目标(后面会介绍)),prerequisties则是生成这个target所需要的文件command则是如果生成target.例子:CC=gcc CFLAGS = -g -lpthread audit: audit_log...
阅读(390) 评论(0)

Google Style Guides-Shell Style Guide

作者声明这篇翻译文章对我来说是有点小挑战的,因为我英语实在很烂,勉强可以看懂一些技术文档,能够猜出大概的含义,但是翻译对我来说算是一个挑战,看英文文档已经不是一天两天的事了,但是这个篇文章却是我的处女作,通读了这篇翻译后的文章,已经发现部分语句翻译的很不好,但是我没有能力纠正好,加上时间上不允许,最后我还是厚着脸皮放到了博客上,如果有幸某位读者读到我这蹩脚的翻译,希望你可以在唾骂我的同时也给出正确的...
阅读(1752) 评论(0)

Stack based vs Register based Virtual Machine Architecture

进程虚拟机简介一个虚拟机是对原生操作系统的一个高层次的抽象,目的是为了模拟物理机器,本文所谈论的是基于进程的虚拟机,而不是基于系统的虚拟机,基于系统的虚拟机可以用来在同一个平台下去运行多个不同的硬件架构的操作系统,常见的有kvm,xen,vmware等,而基于进程的虚拟机常见的有JVM,PVM(python虚拟机)等,java和python的解释器将java和python的代码编译成JVM和PVM可...
阅读(523) 评论(0)
    个人资料
    • 访问:77483次
    • 积分:1867
    • 等级:
    • 排名:千里之外
    • 原创:110篇
    • 转载:0篇
    • 译文:1篇
    • 评论:21条
    博客专栏
    最新评论