
Unix C/C++
surpass1026
朴实
展开
-
awk
awk和sed最大的不同,是awd后面的指令可以写复杂的多条语句,函数等,如判断if等。所以awk与其说是编辑器不如说是一种类似C的编程语言。ls -l|awk {if ($5>1) {print $9}}1 awk文件名添加后缀A69126FB80815A8AB472C3221B.gif加后缀,执行结果为A69126FB80815A8AB472C3221B.gif.aals | gr原创 2009-03-22 04:54:00 · 485 阅读 · 0 评论 -
静态库.a和动态库.so说明
静态库.a和动态库.so说明 (2011-12-26 09:23) 标签: class 目标 源程序 Linux 动态 分类: linux基础学习 我们通常把一些公用函数制作成函数库,供其它程序使用。函数库分为静态库和动态库两种。静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。动态库在程序编译转载 2012-05-06 10:04:56 · 604 阅读 · 0 评论 -
segment
AH&AL=AX(accumulator):累加寄存器BH&BL=BX(base):基址寄存器CH&CL=CX(count):计数寄存器DH&DL=DX(data):数据寄存器SP(Stack Pointer):堆栈指针寄存器BP(Base Pointer):基址指针寄存器SI(Source Index):源变址寄存器DI(Destination Index):目的变址寄存器IP(Instruct原创 2012-06-06 22:20:29 · 585 阅读 · 0 评论 -
函数调用栈恢复
_cdecl 参数从右到左压入,由调用者弹出,函数名'_'前置_stdcall 参数从右到左压入,由被调用者弹出,函数名无变化_pascal 参数从左到右压入,由调用者弹出,函数名大写_fastcall 参数从左到右压入,由被调用者弹出,函数名'@'前置void fun(1,2);1。_cdecl 是这样的 push 2 push 1转载 2012-06-24 21:44:09 · 566 阅读 · 0 评论 -
多函数压栈过程-参数总是在call后立即恢复
所以如果是值传递,函数调用后,值是不变的。因为函数里的参数在在调用时刻前压栈,然后对其修改,而call函数调用后,又恢复的。所以没有对之前临时变量做任何改变。改变的只是压栈的另一份拷贝变量,该份拷贝在调用后又恢复了。没有给实际的参数造成实际的改变。3: void foo(int a,int b)4: {00401020 push ebp0040原创 2012-06-24 22:39:24 · 375 阅读 · 0 评论 -
c汇编完整解析例子
c汇编完整解析例子 寄存器什么时候加括号:对于指针寄存器ebp,取的是里边的内容,需要加括号;如,-4(%ebp); 对于数值寄存器如eax,如果eax内容是指针,取括号就表示指向的数据。如movl (%eax),%edx意思是把eax的值*x赋值给edx。movl $0x4050,%eax,立即数到寄存器开始分析:int swap(i原创 2012-10-14 02:16:02 · 893 阅读 · 0 评论 -
stub and mock difference
The difference between mocking and stubbingStubbing a method is all about replacing the method with code that returns a specified result (or perhaps raises a specified exception). Mocking a method i转载 2012-11-21 00:10:30 · 441 阅读 · 0 评论 -
stub 例子
stub 可以与 mock并用,用来取代mock的接口函数.1.TEST(Logcreate, init){ UT_PTR_SET(log_type_a->init, stub_init); UT_PTR_SET(log_type_b->init, stub_init); UT_PTR_SET(log_type_c->init, stub_init);原创 2012-11-20 23:10:25 · 811 阅读 · 0 评论 -
mock 例子
mock:1. for system.TEST(CCareaTest, CCareaTest_system_failed){ int rc= 0; char execute_file[80]; mock().expectOneCall("system").andReturnValue(-1); memset(execute_file, '\0',原创 2012-11-20 22:57:00 · 4563 阅读 · 0 评论 -
用Unix的设计思想来应对多变的需求
作者:陈皓 Unix设计的例子下面是几个Unix下的例子:1、Unix下,所有的硬件都可以通过文件的方式存取。其统统在/dev下。于是,软件和硬件的耦合被解开了,操作系统只需要把硬件统统变成文件,而程序只需要使用三个东西,一个是fd,一个是read(),一个是write(),就可以来操作任意的硬件了,这就是抽象,简单到不行。2、Unix下,所有的命令都可转载 2012-05-06 11:13:47 · 344 阅读 · 0 评论 -
琐碎笔记
union是共用大的;struct是字节对齐看大的字节类型。 int NTP_ADJ = 2208988800; // seconds diff between 1970 and 1900==============220752000070*365*24*3600=约2207520000NTP 协议中的时间是从1900年开始算起的。而一些程序语言本身(比如PHP)中原创 2012-04-28 17:27:05 · 458 阅读 · 0 评论 -
Makefile
读了陈皓的《跟我一起写 Makefile》,感觉他讲述的思路很清晰。所以就一直看下去了。 总体上了解了makefile的组成,target,prerequisites,command,语法需要掌握的是:如果command与“target:prerequisites”在一行,那么,必须以[Tab键]开头,如果和prerequisites在一行,那么可以POST http://writeblog原创 2009-03-22 04:56:00 · 348 阅读 · 0 评论 -
sed
sed是轻量级流编辑器,它通过输入数据执行用户指定的编辑操作,按顺序基于每行执行操作,将数据读入模式缓冲区中。1. sed 字符串替换 作用:可以用作对文件批量改名 a) sed s/(/(.*/))//1/1/ 对s/(这个左括号为真的左括号字符 /对后面的左括号转义(该左括号意思为包含匹配字符串 .* 这个两字符意思是0个或多个字符/转义)包含结束)真的左括号/ /1意思是对第原创 2009-03-22 04:56:00 · 361 阅读 · 0 评论 -
标准I/O和文件I/O函数
标准I/O库函数是ANSI C建立的带有缓存机制的I/O,文件I/O是最多在Linux/Unix中通过内核缓冲机制的I/O,否则需要自己创建缓冲区,每次调用需要进内核,比调用用户空间函数要慢好些;文件I/O主要是对文件的操作,读写磁盘等,操作的是对文件描述符。而标准I/O函数针对的是字符流。 下面对比它们的函数不同展示方式: 标准I/O ,打开:fopen,freopen,fdopen;原创 2010-03-20 05:24:00 · 466 阅读 · 0 评论 -
<<重载函数中str=buf的理解
istream & operator>>( istream & in, string & str ){ char buf[ string::MAX_LENGTH + 1 ]; in >> buf; if( !in.fail( ) ) str = buf; //如何理解char buf[]赋值给string对象,为什么可以这样赋值呢??? return in;原创 2010-03-20 18:17:00 · 436 阅读 · 0 评论 -
栈堆
生长方向:对于堆来讲,生长方向是向上的,也就是向着内存地址增加的方向;对于栈来讲,它的生长方向是向下的,是向着内存地址减小的方向增长。函数参数压栈从从右向左的参数顺序来压栈的。原创 2010-03-20 19:50:00 · 452 阅读 · 0 评论 -
关于指针常用的面试题的解析
void GetMemory(char *p){p=(char*)malloc(100);}void Test(void){char *str = NULL;GetMemory(str);strcpy(str,"helloworld");printf(str);}请问运行Test函数会有什么样的结果?答:程序崩溃。因为GetMemory并不能传递动态内存,Test函数中的str一直都是NULL转载 2010-03-21 04:54:00 · 434 阅读 · 0 评论 -
蛇行方阵的算法
方阵的一种算法,通过一步步走向判断来完成的。引出问题:如何在函数中传递二维数组!来改进函数的写法。/* * Name: matrix * Author: CF * Created: 2010.03.21 * Description:sideling counting like snack * n=2 * 1 2 *原创 2010-03-21 19:12:00 · 520 阅读 · 0 评论 -
macro defination宏定义
if complicated express needs defined in macro defination.use do while(0) is good for it.#define PACK_DATA(value, play) \ do { \ play->data = value; \ play->le原创 2012-04-28 17:26:18 · 414 阅读 · 0 评论 -
[转]sscanf与正则表达式
博客分类:语法函数 正则表达式 此文所有的实验都是基于下面的程序: char str[10]; for (int i = 0; i 执行完后str的值为 str = "!!!!!!!!!!" 我们把str的每个字符都初始化为惊叹号,当str的值发生变化时,使用printf打印str的值,对比先前的惊叹号,这样就可以方便的观察str发生了怎样的变化转载 2014-07-08 10:06:25 · 427 阅读 · 0 评论