小说网 找小说 无限小说 烟雨红尘 幻想小说 酷文学 深夜书屋

2014年7月24日

Linux系统编程(7)—— 进程之进程概述

摘要: 我们知道,每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体。现在我们全面了解一下其中都有哪些信息。 进程id。系统中每个进程有唯一的id,在C语言中用pid_t类型表示,其实就是一个非负整数。进程的状态,有运行、挂起、停止、... 阅读全文

posted @ 2014-07-24 14:58 牛栏山1 阅读(80) 评论(0) 推荐(0) 编辑

Linux系统编程(6)——文件系统

摘要: 计算机的文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易,文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必关心数据实际保存在硬盘(或者光盘)的地址为多少的数据块上,只需要记住这个文件的所属目录和文件名。在写入新... 阅读全文

posted @ 2014-07-24 14:56 牛栏山1 阅读(111) 评论(0) 推荐(0) 编辑

Linux系统编程(5)——文件与IO之mmap函数

摘要: mmap系统调用它本身提供了不同于一般对普通文件的访问方式,进程可以像读写内存一样对普通文件的操作。而Posix或系统V的共享内存IPC则纯粹用于共享目的,mmap()实现共享内存也是其主要应用之一。mmap系统调用使得进程之间通过映射同一个普通文件实现共享内存。普通文件被映射到进程地址空间后,进... 阅读全文

posted @ 2014-07-24 14:52 牛栏山1 阅读(117) 评论(0) 推荐(0) 编辑

Linux系统编程(4)——文件与IO之ioctl函数

摘要: ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的参数个数如下:int ioctl(int fd, int cmd, …);其中fd就是用户程序打开设备时使用open函数返回的文件标示符,c... 阅读全文

posted @ 2014-07-24 14:52 牛栏山1 阅读(136) 评论(0) 推荐(0) 编辑

Linux系统编程(3)——文件与IO之fcntl函数

摘要: linux文件I/O用:open、read、write、lseek以及close函数实现了文件的打开、读写等基本操作。fcntl函数可以根据文件描述词来操作文件。 用法:int fcntl(int fd, int cmd);int fcntl(int fd, int cmd, long arg);... 阅读全文

posted @ 2014-07-24 14:52 牛栏山1 阅读(169) 评论(0) 推荐(0) 编辑

Linux系统编程(2)——文件与IO之系统调用与文件IO操作

摘要: 系统调用是指操作系统提供给用户程序的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得得操作系统内核提供的特殊服务。在linux中用户程序不能直接访部内核提供的服务。为了更好的保护内核空间,将程序的运行空间分为内核空间和用户空间,他们运行在不同的级上,在逻辑上是相互隔离的。在linux中用... 阅读全文

posted @ 2014-07-24 14:03 牛栏山1 阅读(167) 评论(0) 推荐(0) 编辑

Linux系统编程(1)——文件与I/O之C标准I/O函数与系统调用I/O

摘要: Linux系统的I/O也就是一般所说的低级I/O——操作系统提供的基本IO服务,与os绑定,特定于Linux平台。而标准I/O是ANSI C建立的一个标准I/O模型,是一个标准函数包和stdio.h头文件中的定义,具有一定的可移植性。两者一个显著的不同点在于,标准I/O默认采用了缓冲机制,比如调用... 阅读全文

posted @ 2014-07-24 14:00 牛栏山1 阅读(150) 评论(0) 推荐(0) 编辑

C语言的本质(38)——makefile之变量

摘要: 我们详细看看Makefile中关于变量的语法规则。先看一个简单的例子:foo = $(bar)bar = Huh? all: @echo$(foo)我们执行make将会打出Huh?。当make读到foo = $(bar)时,确定foo的值是$(bar),但并不立即展开$(bar),然后读到b... 阅读全文

posted @ 2014-07-24 13:59 牛栏山1 阅读(226) 评论(0) 推荐(0) 编辑

C语言的本质(37)——makefile之隐含规则和模式规则

摘要: Makefile有很多灵活的写法,可以写得更简洁,同时减少出错的可能。本节我们来看看这样一个例子还有哪些改进的余地。 一个目标依赖的所有条件不一定非得写在一条规则中,也可以拆开写,例如:main.o: main.h stack.h maze.h main.o: main.c gcc... 阅读全文

posted @ 2014-07-24 13:57 牛栏山1 阅读(143) 评论(0) 推荐(0) 编辑

C语言的本质(36)——makefile基础

摘要: 除了Hello World这种极简单的程序之外,一般的程序都是由多个源文件编译链接而成的,这些源文件的处理步骤通常用Makefile来管理。makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,... 阅读全文

posted @ 2014-07-24 13:57 牛栏山1 阅读(109) 评论(0) 推荐(0) 编辑

C语言的本质(35)——共享库

摘要: 库用于将相似函数打包在一个单元中。然后这些单元就可为其他开发人员所共享,并因此有了模块化编程这种说法— 即,从模块中构建程序。Linux支持两种类型的库,每一种库都有各自的优缺点。静态库包含在编译时静态绑定到一个程序的函数。动态库则不同,它是在加载应用程序时被加载的,而且它与应用程序是在运行时绑定... 阅读全文

posted @ 2014-07-24 13:31 牛栏山1 阅读(130) 评论(0) 推荐(0) 编辑

C语言的本质(34)——静态库

摘要: 库是一种软件组件技术,库里面封装了数据和函数。库的使用可以使程序模块化。Windows系统包括静态链接库(.lib文件)和动态链接库(.dll文件)。Linux通常把库文件存放在/usr/lib或/lib目录下。Linux库文件名由:前缀lib、库名和后缀3部分组成,其中动态链接库以.so最为后缀... 阅读全文

posted @ 2014-07-24 13:29 牛栏山1 阅读(123) 评论(0) 推荐(0) 编辑

C语言的本质(33)——GCC编译器入门

摘要: GCC(GNU CompilerCollection,GNU编译器套装),是由 GNU 开发的编程语言编译器。它是以GPL许可证所发行的自由软件,也是 GNU计划的关键部分。GCC原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统采纳为标准的编译器,GCC同样适用于微软的Windo... 阅读全文

posted @ 2014-07-24 13:28 牛栏山1 阅读(171) 评论(0) 推荐(0) 编辑

C语言的本质(32)——C语言与汇编之C语言内联汇编

摘要: 用C写程序比直接用汇编写程序更简洁,可读性更好,但效率可能不如汇编程序,因为C程序毕竟要经由编译器生成汇编代码,尽管现代编译器的优化已经做得很好了,但还是不如手写的汇编代码。另外,有些平台相关的指令必须手写,在C语言中没有等价的语法,因为C语言的语法和概念是对各种平台的抽象,而各种平台特有的一些东... 阅读全文

posted @ 2014-07-24 13:26 牛栏山1 阅读(180) 评论(0) 推荐(0) 编辑

C语言的本质(31)——C语言与汇编之函数调用的本质

摘要: 我们一段代码来研究函数调用的过程。首先我们写一段简单的小程序:int sum(int c, int d){ inte = c + d; returne;} int func(int a, int b){ returnsum(a, b);} int m... 阅读全文

posted @ 2014-07-24 13:22 牛栏山1 阅读(120) 评论(0) 推荐(0) 编辑

导航