随笔分类 -  C

c programs.
pipe()管道最基本的IPC机制
摘要:进程间通信 fork pipe pie_t 等用法(管道机制 通信)每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲 区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称... 阅读全文

posted @ 2015-11-21 17:12 liweilijie 阅读(651) 评论(0) 推荐(0)

linux VFS 内核数据结构
摘要:简单归纳:fd只是一个整数,在open时产生。起到一个索引的作用,进程通过PCB中的文件描述符表找到该fd所指向的文件指针filp。文件描述符的操作(如: open)返回的是一个文件描述符,内核会在每个进程空间中维护一个文件描述符表, 所有打开的文件都将通过此表中的文件描述符来引用;而流(如: fo... 阅读全文

posted @ 2015-11-21 17:12 liweilijie 阅读(315) 评论(0) 推荐(0)

tcp协议中mss的理解
摘要:在介绍MSS之前我们必须要理解下面的几个重要的概念。MTU: Maxitum Transmission Unit 最大传输单元MSS: Maxitum Segment Size 最大分段大小PPPoE: PPP Over Ethernet(在以太网上承载PPP协议),就是因为这个协议的出现我们才有必... 阅读全文

posted @ 2015-11-21 17:10 liweilijie 阅读(1902) 评论(0) 推荐(1)

tcp的精髓:滑动窗口
摘要:TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现。一、滑动窗口协议 关于这部分自己不晓得怎么叙述才好,因为理解的部分更多,下面就用自己的理解来介绍下TCP的精髓:滑动窗口协议。 所谓滑动窗口协议,自己理解有... 阅读全文

posted @ 2015-11-21 17:09 liweilijie 阅读(293) 评论(0) 推荐(0)

文件IO一些注意的地方
摘要:两个各自独立的进程各自打开同一个文件,则每个进程都有各自的文件表项。这是因为每个进程都有它自己对该文件的当前偏移量。但是对一个给定的文件只有一个v节点表项。lseek()只修改文件表项中的当前文件偏移量,没有进行任何IO操作。可能有多个文件描述符指向同一个文件表项,比如fork()出的父子进程。两个... 阅读全文

posted @ 2015-11-21 17:00 liweilijie 阅读(136) 评论(0) 推荐(0)

acess() 判断目录是否存在
摘要:acess()功能描述: 检查调用进程是否可以对指定的文件执行某种操作。 #include int access(const char *pathname, int mode);参数说明:pathname: 需要测试的文件路径名。 mode: 需要测试的操作模式,可能值是一个或多个. R_OK(... 阅读全文

posted @ 2015-11-21 16:59 liweilijie 阅读(777) 评论(0) 推荐(0)

fcntl()功能 详解
摘要:fcntl()函数可以改变已打开文件的性质 #include #include int fcntl(int fd , int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cmd, struct ... 阅读全文

posted @ 2015-11-21 16:59 liweilijie 阅读(682) 评论(0) 推荐(0)

openssl安装
摘要:www.openssl.orgconfigure the environment:tar -zxvf openssl-0.9.8h.tar.gzcd openssl-0.9.8.h#/config --prefix=/opt/openssl##安装在/opt/openssl目录里面。makemake... 阅读全文

posted @ 2015-11-21 16:56 liweilijie 阅读(223) 评论(0) 推荐(0)

线程间同步用到的几种锁机制
摘要:线程间同步:1.互斥量pthread_mutex_t在使用前必须进行初始化:#include int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t... 阅读全文

posted @ 2015-11-21 16:56 liweilijie 阅读(1301) 评论(0) 推荐(0)

对称加密与非对称加密
摘要:The Principle of Encryption/Decryption加密解密流程:plaintext(明文)->encryption->ciphertext(密文)->decryption->plaintext(明文)CT = f1(PT, key)PT = f2(CT, key)根据key... 阅读全文

posted @ 2015-11-21 16:55 liweilijie 阅读(290) 评论(0) 推荐(0)

数字签名是什么?
摘要:今天,我读到一篇好文章。它用图片通俗易懂地解释了,"数字签名"(digital signature)和"数字证书"(digital certificate)到底是什么。我对这些问题的理解,一直是模模糊糊的,很多细节搞不清楚。读完这篇文章后,发现思路一下子就理清了。为了加深记忆,我把文字和图片都翻译出... 阅读全文

posted @ 2015-11-21 16:54 liweilijie 阅读(224) 评论(0) 推荐(0)

openssl rsa 加解密
摘要:1.openssl进行rsa加密解密首先介绍下命令台下openssl工具的简单使用:生成一个密钥:#openssl genrsa -out test.key 1024这里-out指定生成文件的。需要注意的是这个文件包含了公钥和密钥两部分,也就是说这个文件即可用来加密也可以用来解密。后面的1024是生... 阅读全文

posted @ 2015-11-21 16:54 liweilijie 阅读(517) 评论(0) 推荐(0)

ssl创建自签名的https通信
摘要:ssl协议:ssl在tcp之上,http之下。兼容底层协议。所以推广起来很容易。create a self-signed server certificate -- for test purposes:生成自签名的CA:#openssl req -new -x509 -days 30 -keyout... 阅读全文

posted @ 2015-11-21 16:53 liweilijie 阅读(170) 评论(0) 推荐(0)

GIT对象模型
摘要:GIT对象模型1.SHA 所有用来表示项目历史信息的文件,是通过一个40个字符的(40-digit)“对象名”来索引的,对象名看起来像这样:6ff87c4664981e4397625791c8ea3bbb5f2279a3你会在Git里到处看到这种“40个字符”字符串。每一个“对象名”都是对“对象”内... 阅读全文

posted @ 2015-11-21 16:52 liweilijie 阅读(260) 评论(0) 推荐(0)

把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列。
摘要:编程实现:把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列。实现了unsigned long型的转换。// 十进制转换为二进制,十进制数的每1bit转换为二进制的1位数字char *int_to_bin(unsigned long data){ int bit_... 阅读全文

posted @ 2015-11-21 16:50 liweilijie 阅读(457) 评论(0) 推荐(0)

#define XXX do{...}while(0)
摘要:函数式宏定义的参数没有类型,预处理器只负责做形式上的替换,而不做参数类型检查,所以传参时要格外小心。 调用真正函数的代码和调用函数式宏定义的代码编译生成的指令不同。如果是真正的函数,那么它的函数体要编译生成指令,代码中出现的每次调用也要编译生成传参指令和call指令。而如果是函数式宏定义,这个宏定义... 阅读全文

posted @ 2015-11-21 16:50 liweilijie 阅读(275) 评论(0) 推荐(0)

函数的递归调用例子学习
摘要:计算第五个人年纪和5!的例子: 1 #include 2 3 int main() 4 { 5 6 int age(int n); 7 int jiecheng(int n); 8 9 printf("five the age is : %d.\n", age(5... 阅读全文

posted @ 2015-09-14 16:40 liweilijie 阅读(340) 评论(0) 推荐(0)

输出4*5的数列
摘要:1 2 3 4 52 4 6 8 103 6 9 12 154 8 12 16 20 1 int main() 2 { 3 int i, j; 4 for (i = 1; i <= 4; i++) 5 { 6 for (j = 1; j<=5... 阅读全文

posted @ 2015-09-11 15:57 liweilijie 阅读(161) 评论(0) 推荐(0)

符号常量与常变量的区别
摘要:符号常量与常变量的区别定义符号常量:#define PI 3.1415926 //注意后面没有分号定义常变量 :const float PI=3.1415926;区别:常变量:变量的特征是存在一个以变量名命名的存储单元,在一般情况下,存储单元中的内容是可以变化的。而对于常变量,在变量的基础上加了一个... 阅读全文

posted @ 2015-09-09 15:44 liweilijie 阅读(1793) 评论(0) 推荐(0)

ftp by libcurl
摘要:ftp by libcurl 阅读全文

posted @ 2013-01-18 10:24 liweilijie 阅读(978) 评论(0) 推荐(0)

导航