摘要: static关键字 1.作用于变量: 用static声明局部变量-------局部变量指在代码块{}内部定义的变量,只在代码块内部有效(作用域),其缺省的存储方式是自动变量或说是动态存储的,即指令执行到变量定义处时才给变量分配存储单元,跳出代码块时释放内存单元(生命期)。用static声明局部变量时,则改变变量的存储方式(生命期),使变量成为静态的局部变量,即编译时就为变量分配内存,直到程序退出才释放存储单元。这样,使得该局部变量有记忆功能,可以记忆上次的数据,不过由于仍是局部变量,因而只能在代码块内部使用(作用域不变)。 用static声明外部变量-------外部变量指在所有... 阅读全文
posted @ 2013-07-22 20:16 楼上人 阅读(1008) 评论(0) 推荐(0) 编辑
摘要: 面向开发者使用的最外层接口:OPENSSL_malloc(num)CRYPTO_malloc((int)num,__FILE__,__LINE__)OPENSSL_realloc(addr,num)CRYPTO_realloc((char*)addr, (int)num,__FILE__,__LINE__)OPENSSL_realloc_clean(addr,old_num,num)CRYPTO_realloc_clean(addr,old_num,num,__FILE__,__LINE__)OPENSSL_remalloc(addr,num)CRYPTO_remalloc((char**)a 阅读全文
posted @ 2013-07-22 19:48 楼上人 阅读(1576) 评论(0) 推荐(1) 编辑
摘要: Openssl 之大数运算函数 BN主要介绍Openssl中的有关大数运算函数,这个对于RSA研究和实现比较有价值1.初始化函数BIGNUM *BN_new(void); 新生成一个BIGNUM结构void BN_free(BIGNUM *a); 释放一个BIGNUM结构,释放完后a=NULL;void BN_init(BIGNUM *); 初始化所有项均为0,一般为BN_ init(&c)void BN_clear(BIGNUM *a); 将a中所有项均赋值为0,但是内存并没有释放void BN_clear_free(BIGNUM *a); 相当与将BN_free和BN_clear综 阅读全文
posted @ 2013-07-22 17:55 楼上人 阅读(2838) 评论(0) 推荐(0) 编辑
摘要: 闲来无事下载了一本书的源码,但又觉得每次都要编译每一个程序很麻烦(后面其实发现,这都只是.c文件并不是大工程,编译每一个C文件比写一个makefile容易多了)。但前几天正好看到了autotools生成makefile的方法,那就练练手吧。废话少说,进入正题。首先肯定是下载autotools, 一个yum install autoconf 很简单酒完成了。接下来就要正式步骤:1,autoscan生成了一一个configure.scan文件。编辑它,增加宏声明 AM_INIT_AUTOMAKE(hello,1.0) 和AC_CONFIG_FILES([makefile]) 然后保存为config 阅读全文
posted @ 2013-05-14 21:53 楼上人 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 在计算机操作系统中,PV操作是进程管理中的难点。首先应弄清PV操作的含义:PV操作由P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,具体定义如下:P(S):①将信号量S的值减1,即S=S-1;②如果S³0,则该进程继续执行;否则该进程置为等待状态,排入等待队列。V(S):①将信号量S的值加1,即S=S+1;②如果S>0,则该进程继续执行;否则释放队列中第一个等待信号量的进程。PV操作的意义:我们用信号量及PV操作来实现进程的同步和互斥。PV操作属于进程的低级通信。什么是信号量?信号量(semaphore)的数据结构为一个值和一个指针,指针指向等待该信号量的 阅读全文
posted @ 2013-05-13 15:10 楼上人 阅读(363) 评论(0) 推荐(0) 编辑
摘要: 文件 描述符每打开一个文件或者创建一个文件,就返回一个文件描述符。描述符0 对应 标准输入描述符1 对应 标准输出描述符2 对应 标准出错文件描述符的范围是0~OPEN_MAXOPEN 函数#include<fcnt1.h>int open(const char *pathname, int oflag, mode_t mode)成功返回描述符,错误返回-1open返回的文件描述符一定是最小未用的描述符数值。(例子:关闭标准输出,在打开一个文件,则文件一定会在标准输出打开)creat函数#include《fcnt1.h》int creat(const char *pathname, 阅读全文
posted @ 2013-05-06 15:39 楼上人 阅读(178) 评论(0) 推荐(0) 编辑
摘要: Unix标准化及实现三种主要的标准: ISO C IEEE POSIX Single UNIX Specification(XSI)一层一层递增,IEEE POSIX 是ISO C的超集。XSI 是POSIX的超集。限制要想提高软件的可移植性,就必须有限制:编译时限制运行时的限制编译时限制:因为某些限制是固定的,则可以在头文件中定义。运行时限制:限制是变化的,则必须在函数运行时调用函数取的。三大标准中的限制ISO C限制:都是编译时限制,头文件<limits.h>中定义的常量。POSIX 限制:分为19个不变最小值,不变值:SSIZE_MAX。运行时可增加的值,运行时不变的值,路径 阅读全文
posted @ 2013-04-29 22:40 楼上人 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 建议只对无符号数做位运算。有符号数会有出错的可能。移位左移相当于乘以2,右移相当于除以2。与运算(&) 可以取出某些位的值。 0x12345678 & 0x000000ff = 0x00000078 可以将某些位清零。0x12345678 & 0xffff00ff = 0x12340078或运算 (|)将某些位至1. 0x12345678 | 0x0000ff00 = 1234ff78循环右移: (a<<(N-n)) | a>>n循环左移:(a>>(N-n) ) | a<<n异或 运算 : 与0异或 保持原值不变, 与1异 阅读全文
posted @ 2013-04-29 22:33 楼上人 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 调用fork 创建新进程,返回两次,父进程返回子进程ID,子进程返回0;(分别在父进程和子进程返回)。出错处理: errno,只有当函数的返回值指明错误才会检验其值。任一函数都不会将errno值设置为0。C标准定义的两个函数,帮助打印出错信息:1 char *strerror(int errnum);此函数将errnum映射成一个出错信息字符串,并返回此字符串的指针。void perror(const char *msg)输出由msg指向的字符串,然后是一个冒号,一个空格,接着是对于errno值的出错信息。出错恢复:出错分为致命性和非致命性两类。致命性无法执行恢复动作。非致命性的出错,由资源短 阅读全文
posted @ 2013-04-27 20:10 楼上人 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 安装mid3iconvsudo apt-get install python-mutagencd到音乐的目录转换命令:mid3iconv -e GBK */*.mp3 重新导入rhythmbox! 阅读全文
posted @ 2013-04-22 20:39 楼上人 阅读(88) 评论(0) 推荐(0) 编辑