- 博客(13)
- 资源 (1)
- 收藏
- 关注
转载 python getopt使用
python中 getopt 模块,该模块是专门用来处理命令行参数的函数getopt(args, shortopts, longopts = [])参数args一般是sys.argv[1:]shortopts 短格式 (-) longopts 长格式(--) 命令行中输入:python test.py -i 127.0.0.1 -p 80 55 66python test.py -
2013-12-21 02:46:03
356
原创 thunderbird邮箱备份方法
1. 所有的邮件信息都保存在~/.thunderbird/*.default,更换电脑时备份这个就可以了。2. 有时可能多个default,通过vim ~/.thunderbird/profiles.ini查看具体指定的是哪个default,所有的邮件内容都保存在这个default里面。下面是一个root用户的profiles.ini。它指定的是普通用户的邮箱内容,由
2013-08-01 10:13:31
2098
转载 删除代码中的注释
#define N 1024void delete_notes(char infilename[],char outfilename[]){ FILE* infp = fopen(infilename, "r+"); FILE* outfp = fopen(outfilename, "w+"); int flag = 0, flag1 = 1; char ch
2013-07-03 17:04:21
619
原创 链表操作
1.单链表逆序typedef struct node{ int data; struct node *next;}NODE;NODE *reverse(NODE * head){ NODE *p = head; NODE *q = head->next; NODE *r = NULL; while(q) { r =
2013-06-27 17:58:24
332
转载 Malloc内存泄露和内存越界问题的研究
Malloc内存泄露和内存越界问题的研究------内存跟踪与检测篇1. 引言熟悉c语言的人都知道,内存泄露,特别是内存越界是软件界非常棘手,甚至防不胜防的问题。由于这种问题一般为概率问题,时而出现时而不出现,这样给问题的定位分析带来很大的困难,后期排查的代价也比较大,因此,这个问题一直困扰着软件开发人员和软件界。不管多牛的技术高手,甚至技术专家都不敢拍着胸脯说,他负责
2013-06-18 19:29:16
1274
原创 二级指针的使用实例
/*main函数将一个空指针的地址(二级指针)传入多个子函数,每个子函数都需要添加新节点,形成链表,要求不改变首节点所指向的地址,*/typedef struct id_node_t{ int id; struct id_node_t *next; } ID_NODE_T;void test1(ID_NO
2013-06-17 17:39:46
570
转载 多线程编程
简单的多线程编程 Linux系统下的多线程遵循POSIX线程接口,称为pthread。编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a。顺便说一下,Linux下pthread的实现是通过系统调用clone()来实现的。clone()是Linux所特有的系统调用,它的使用方式类似fork,关于clone()的详细情况,有兴趣的读者可以去查
2013-06-16 20:17:36
322
转载 volatile变量
volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。 使用该关键字的例子如下: int volatile nVint; >>>>当要求使用volatile 声明的变量的值的时候,系统总是
2013-06-16 19:55:20
422
转载 编译宏
如果表达式BUFSIZE >= 1024成立,则…code…被编译。#if BUFSIZE >= 1024…code…#endif如果BUFSIZE被定义且BUFSIZE >= 1024,则…code…被编译。#if defined BUFSIZE && BUFSIZE >= 1024…code…#endif#if defined 等价于 #ifdef#if
2013-05-31 13:23:44
490
转载 可变参数函数和宏函数
格式化字符串,可变参数函数需要借助于va_list va_start va_arg va_end宏,可变参数宏需要借助于##.变参1:最后一个可见参数类型是intint add(int n, ...);int main(){ printf("%d\n", add(4,1,2,3,4)); /* 计算 1 + 2 + 3 + 4,第一个4,是4个数的意思 */ pr
2013-05-31 13:20:35
419
原创 指针强转
一级指针强转成二级指针,如void*到char**,用一句话理解,就是把一级指针所指的内存强转成char*.void main(){ void *p = malloc(20); memset(p,0,20); char **typed_p = (char **)p; printf("p is 0x%08x\n",(unsi
2013-05-24 15:09:07
1148
转载 linux的补丁管理工具--quilt
2.1 基本概念quilt是一个帮助我们管理补丁的程序。quilt的命令格式类似于cvs:quilt 子命令 [参数] 0.46版的quilt有29个子命令。掌握quilt的关键是了解使用quilt的流程。使用quilt时,我们会在一个完整的源代码树里工作。只要我们在源代码树里使用了quilt命令,quilt就会在源代码树的根目录建立两个特殊目录:patches和.pc。quilt
2013-04-09 14:21:50
4297
转载 补码和取反
在计算机中,数值是以其补码保存的: 正数的补码和原码相同; 负数的补码:将该数的绝对值(即除符号位)的二进制形式按位取反再加1。举例:~0 = -1 (~运算符指对所有位取反,包括符号位)0 的机器码(原码):0|0000000000000000000000000000000-1的机器码(补码):1|1111111111111111111111111111111很明显,1|
2013-03-22 16:37:31
2139
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人