爱悠闲 > 分类 >

linux-C 第1页

基本概念:同步、异步、阻塞和非阻塞
Asynchronous != Non-Blocking      Since you are just learning this, I will assume that up till now you have been using blocking sockets. With that in mind, I will assume that you may have toyed around
基本概念:同步、异步、阻塞和非阻塞
同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其实绝大多数函数都是同步调用(例如sin, isdigit等)。但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。最常见的例子就是SendMessage。该函数发送一个消息给某个窗口,在对方处理完消息之前,这个函数不返回。当对方处理完毕以后,该函数才把消息处理函数所
TCP连接的状态转换图深度剖析[转]
1、建立连接协议(三次握手) (1)客户端发送一个带SYN标志的TCP报文到服务器。这是三次握手过程中的报文1。 (2) 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志。因此它表示对刚才客户端SYN报文的回应;同时又标志SYN给客户端,询问客户端是否准备好进行数据通讯。 (3) 客户必须再次回应服务段一个ACK报文,这是报文段3。 2、连接终止协议(四次握手
linux编程的108种奇淫巧计-4(编译展开)
  今天继续介绍第4种常见技巧,编译展开 ,代码见本文最后,重要的部分有注释说明。         我们知道对于循环,编译器会自动进行展开,但是如何展开,这完全不可控,如果我们自行码代码,代码会显得臃肿难看,大段重复代码,因此本为介绍了一种常见的方法进行这种代码展开,可以写到任意层次,我这里只写到了DO16,见代码加粗的部分。       实验表明在手动展开后,加上O3的编译优化,依然能够比不手动
C程序编译过程
题记:前几天去华为面试实习生,面试官问了个问题,让我说出一个程序的详细编译过程,当时磕磕绊绊说了一堆东西,事后自己都不知道当时说了什么,惭愧。 C语言编译过程 编译,编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。 C源程序头文件-->预编译处理(cpp)-->编译
vim的tag备忘
半年的复习考研,vim很多不是很熟悉了,重新看了下tag的使用,现将自己认为重要的记录下来。 首先是生成tag文件,使用的命令是ctags。例如ctags *.c会把当前目录下,函数都标记进tags文件中。 然后在vim中用:tag 函数名 就可以了,如果有多个重复定义,可以用:tnext :tprevious :tfirst :tlast. 当然还有我们的 crtl+] 是跳进光标下的tag。c
理解C语言位域
理解C语言位域   这也是在ChinaUnix 上 看了几篇关于C语言'位域(Bit Fields)'的帖子之后,才想写下这篇文章的。其实在平时的工作中很少使用到'位域',我是搞服务器端程序设计的,大容量的内存可以让我毫不犹豫的任 意'挥霍'^_^。想必搞嵌入式编程的朋友们对位域的使用应该不陌生吧。这里我也仅仅是凭着对C语言钻研的兴趣来学习一下'位域'的相关知识的,可能有些 说法没有实践,缺乏说服
Vim 复制粘贴探秘
延伸一下, 有时候不想费劲看多少行或复制大量行时,可以使用标签来替代 光标移到起始行,输入ma 光标移到结束行,输入mb 光标移到粘贴行,输入mc 然后 :'a,'b co 'c 把 co 改成 m 就成剪切了    在vim下用crtl-c和crtl-v复制粘贴 把下面代码放到vimrc文件里,就可以了。 map <C-c> "+y map <C-v> "+p   当搜索之后,结果会高亮,想去掉
static 全局变量 局部变量 函数
 C语言中使用静态函数的好处: 静态函数会被自动分配在一个一直使用的存储区,直到退出应用程序实例,避免了调用函数时压栈出栈,速度快很多。 关键字“static”,译成中文就是“静态的”,所以内部函数又称静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限 于本文件。 使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名,因
指针数组 数组指针 函数指针 函数指针数组
数组指针--指向数组的指针,是一个指针,其指向的类型是数组; 指针数组--元素为指针的数组,是一个数组,其中的元素为指针。 例如 int (*a)[5];这个是数组指针。int *a[5];这个是指针数组。 定义函数指针类型: int max(int,int); typedef int (*fun_ptr)(int,int); 申明变量,赋值:fun_ptr max_func=ma