摘要: 1、sed编辑器被称作流编辑器(stream aditor),跟普特的交互式文本编辑器恰好相反。在交互式文本编辑器中(比如vim),你可以用键盘命令来交互地插入、删除或替换数据中的文本。流编辑器则会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。sed编辑器可以基于输入到命令行的或是存储在命令文本中的命令来处理数据流中的数据。它每次从输入中读取一行,用提供的编辑命令匹配数据、按命令中指定的方式修改流中的数据,然后生成的数据输出到STDOUT。在流编辑器将所有命令与一行数据进行匹配后,它会读取下一行数据并重复这个过程。在流编辑器处理完流中的所有数据行后,它就会停止。使用sed命令格式如下 阅读全文
posted @ 2012-12-16 19:41 sinaxyz 阅读(11556) 评论(1) 推荐(1) 编辑
摘要: Linux shell正则表达式定义:用来过滤文本的模式模板。正则表达式类型:正则表达式是用正则表达引擎(regular expression engine)实现的。在Linux中,有两种流行的正则表达式引擎:1》POSIX基本正则表达式(BRE)引擎;2》POSIX扩展正则表达式(ERE)引擎。1、纯文本$ echo "This is a test" | sed -n '/test/p'2、特殊字符正则表达式的特殊字符包括:.*[]^${}\+?|()$ echo "The cost is \$4.00" | sed -n '/ 阅读全文
posted @ 2012-12-16 13:06 sinaxyz 阅读(1997) 评论(0) 推荐(1) 编辑
摘要: 可重入函数(即可以被中断的函数)可以被一个以上的任务调用,而不担心数据破坏。可重入函数在任何时候都可以被中断,而一段时间之后又可以恢复运行,而相应的数据不会破坏或者丢失。可重入函数使用的变量有两种情况:1.使用局部变量,变量保存在CPU寄存器中或者堆栈中;2.使用全局变量,但是这时候要注意保护全局变量(防止任务中断后被其它任务改变变量)。void strcpy(*dest,*src){ while(* dest++ = *src ++){;} *dest = NUL;}分析:上面的函数用于字符串复制,而参数是存放在堆栈中的,故而改函数可以被多任务调用,而不必担心各个任务调用期间会互... 阅读全文
posted @ 2012-09-10 22:21 sinaxyz 阅读(2787) 评论(0) 推荐(0) 编辑
摘要: 1 #include <iostream> 2 using namespace std; 3 typedef struct bintree_node 4 { 5 int data; 6 bintree_node *lchild; 7 bintree_node *rchild; 8 }bintree_node; 9 10 typedef struct stack 11 { 12 bintree_node *data[100]; 13 int tag[100];//为栈中每个元素设置标记,用于后序遍历 14 int top;... 阅读全文
posted @ 2012-08-25 16:12 sinaxyz 阅读(513) 评论(0) 推荐(0) 编辑
摘要: 1 #include <iostream> 2 using namespace std; 3 4 typedef struct 5 { 6 int data[100]; 7 int length; 8 }bintree; 9 10 void init_tree(bintree *ptree, int *input, int len)11 {12 int i;13 for(i = 0; i < 100; ++i)14 {15 if(i < len)16 ptree->data[i] = input[i];17... 阅读全文
posted @ 2012-08-25 15:52 sinaxyz 阅读(642) 评论(0) 推荐(0) 编辑
摘要: 第二章 Linux内核1 内核开发特点1)内核编译时不能访问C库;2)浮点数很难使用;3)内核只有一个定长堆栈;4)注意同步和并发。第三章进程管理1 current宏:查找当前运行进程的进程描述符。2 进程状态(5种)TASK_RUNNING :1)正在运行;2)在运行队列中等待执行。TASK_INTERRUPTIBLE:进程正在睡眠,可以被信号唤醒。TASK_UNINTERRUPTIBLE:进程正在睡眠,不会收到信号被唤醒。TASK_ZOMBIE:僵死态,进程已经结束,父进程未使用wait4()。TASK_STOPPED3 进程上下文进程进入内核空间时,current宏依然有效,内核“代表进 阅读全文
posted @ 2012-08-20 20:23 sinaxyz 阅读(2904) 评论(0) 推荐(0) 编辑
摘要: 1.page 主要成员atomic_t count;//这个页的引用数. 当这个 count 掉到 0, 这页被返回给空闲列表.void *virtual;//如果页被映射,则表示这页的内核虚拟地址; 否则, NULL.unsigned long flags;//描述页状态的一套位标志. 这些包括 PG_locked, 它指示该页在内存中已被加锁, 以及 PG_reserved,//它防止内存管理系统使用该页2.vm_area_struct 主要成员unsigned long vm_start;//VMA 开始于unsigned long vm_end; //VMA 结束struct file 阅读全文
posted @ 2012-08-20 20:12 sinaxyz 阅读(414) 评论(0) 推荐(0) 编辑
摘要: 1、将文件checkout到本地目录svn checkoutpath(path是服务器上的目录)例如:svn checkout svn://192.168.1.1/pro/domain简写:svn co2、往版本库中添加新的文件svnaddfile例如:svn add test.php(添加test.php)svn add*.php(添加当前目录下所有的php文件)3、将改动的文件提交到版本库svn commit-m "LogMessage"[-N][--no-unlock] PATH(如果选择了保持锁,就使用--no-unlock开关)例如:svn commit -m & 阅读全文
posted @ 2012-08-20 17:01 sinaxyz 阅读(230) 评论(0) 推荐(0) 编辑
摘要: linux服务器上,多少会出现一些僵尸进程,下面介绍如何快速寻找和消灭这些僵尸进程的方法首先,我们可以用top命令来查看服务器当前是否有僵尸进程,在下图中可以看到僵尸进程数的提示,如果数字大于0,那么意味着服务器当前存在有僵尸进程下面,我们用ps和grep命令寻找僵尸进程ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'命令注解:-A 参数列出所有进程-o 自定义输出字段 我们设定显示字段为 stat(状态), ppid(进程父id), pid(进程id),cmd(命令)这四个参数因为状态为 z或者Z的进程为僵尸进程,所以我们使用grep抓取 阅读全文
posted @ 2012-08-20 16:39 sinaxyz 阅读(270) 评论(0) 推荐(0) 编辑
摘要: malloc函数void *malloc(int size); 说明:malloc 向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针。malloc 与free 是C++/C 语言的标准库函数,new/delete 是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象在消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编 阅读全文
posted @ 2012-08-20 15:31 sinaxyz 阅读(3409) 评论(0) 推荐(1) 编辑