unix文件描述符

2017-03-15
阅读 3 分钟
3.6k
文件描述符 简称fd,unix内核对所有打开的文件,使用fd进行引用,fd表现为一个递增的非负整数。 所谓“打开的文件”并不一定是指我们通常理解的文本文件,可能是个设备文件,或是socket。在unix中一切皆文件,文件是一个泛称。 文件描述符具有以下性质: 每个进程具有自己的fd递增空间。已关闭的fd所占用的正整数是可能被...

实践:GNU构建系统

2016-09-24
阅读 10 分钟
5.5k
在上一篇概念:GNU构建系统和Autotool,我对GNU构建系统从用户视角和开发者视角分别进行了阐述。本篇从我的实践总结的角度,并阐述如何从头开始规划一个基于GNU构建系统的项目。事实上,随着开发者对跨平台认知的深入和完善,才能逐渐掌握GNU构建。注意:本文的例子不依赖于任何IDE和编辑器。这样读者可以从根本上认识到...

概念:GNU构建系统和Autotool

2016-09-16
阅读 7 分钟
7.8k
经常使用Linux的开发人员或者运维人员,可能对configure->make->make install相当熟悉。事实上,这叫GNU构建系统,利用脚本和make程序在特定平台上构建软件。这种方式成为一种习惯,被广泛使用。本文从用户视角和开发者视角详细说明,这种构建方式的细节,以及开发者如何利用autoconf和automake等工具(autotools)...

C静态库连接的顺序问题

2016-09-15
阅读 3 分钟
7.3k
C语言的静态连接,简单的说就是将编译得到的目标文件.o(.obj),打包在一起,并修改目标文件中函数调用地址偏移量的过程。当在大一点的项目中,可能会遇到连接时,由于静态库在链接器命令行中出现顺序的问题,造成undefined reference错误。本文深入探讨一下这个问题,以及如何解决。

ANSI C标准库

2016-09-01
阅读 1 分钟
2.4k
将输入输出抽象为流,预定义标准输入输出和标准错误流:stdin stdout stderr。f开头的函数的操作对象是一个流对象FILE,s开头的函数操作的对象通常是char *。

怎样让C不这么难

2016-08-17
阅读 2 分钟
2.1k
笔者最近在开始一些C的应用程序开发,主要在linux下进行,目标是跨平台的应用程序。虽然是基于某开源程序进行开发,看了不少源码,也动手扩展和修改了开源程序,感触颇多。C其实是语法最为简单的编程语言之一。但是在实际的开发中,尤其是用C来开发一些系统应用程序,会感觉到比Java之类的要难的多,究竟是为什么呢?有...

Linux下的静态库、动态库和动态加载库

2016-07-17
阅读 2 分钟
10.6k
动态链接库(.so): 动态库还分为两种用法: a) 应用程序运行期间链接动态库,但是在编译期间声明动态库的存在,也就是说这种动态库必须在编译时对编译器可见,但编译器却不将此种库编译进可执行文件; b) 在运行期间,动态加载和卸载的库,使用动态加载方法加载。这种库的形式跟动态链接没有本质区别,区别是在调用时,是由...

I/O多路复用和Socket

2016-03-04
阅读 3 分钟
7.5k
从程序编写的角度来看,I/O就是调用一个或多个系统函数,完成对输入输出设备的操作。输入输出设置可以是显示器、字符终端命令行、网络适配器、磁盘等。操作系统在这些设备与用户程序之间完成一个衔接,称为驱动程序,驱动程序向下驱动硬件,向上提供抽象的函数调用入口。

FastCGI+lighttpd开发之介绍和环境搭建

2015-11-17
阅读 6 分钟
14.9k
由于需要做一些简单的基于FastCGI的Web开发,开始学习和调研,本篇介绍CGI和FastCGI的概念以及基于FastCGI官方的devkit,以及lighttpd搭建起简单的开发环境,以作备忘。

一段C语言和汇编的对应分析,揭示函数调用的本质

2015-03-03
阅读 3 分钟
8.4k
最近网易云课堂开放了一节叫Linux内核分析的课程。一直对操作系统和计算机本质很感兴趣,于是进去看了下,才第一堂课,老师就要求学生写一篇关于课时1的博客作为作业。对于这种新颖的作业形式,笔者相当惊讶。好吧,作为任务,还是完成一下吧,刚好需要消化一下。本文将会按照要求,将一段C语言代码编译成汇编,并给予分...

Nginx源码:利用C语言tricky构建函数链

2014-07-27
阅读 3 分钟
3.9k
最近开始使用Nginx的第三方扩展解决实际的问题,对Nginx的扩展开发产生了一些兴趣,在阅读第三方代码时产生了一些心得和体会。本文详细分析了进行Nginx过滤器开发的时候,Nginx提供的注册过滤器的精妙机制。参考Nginx开发从入门到精通-过滤模块