导航

2012年2月9日

摘要: 指针在声明的时候可以用关键字restrict修饰,如 int *restrict p; 将告诉编译器,指针p是访问p所指对象的唯一方式 阅读全文

posted @ 2012-02-09 20:05 网名还没想好 阅读(163) 评论(0) 推荐(0) 编辑

摘要: 1, O_APPEND的含义是在每次写之前,都讲标志位移动到文件的末端。表面上读这句话可能会有误解,提出一个问题:当在O_APPEND打开后,然后用lseek移动到其他的位置,然后再用write写,这个时候,请问你数据写到哪里去了?是在末端,还是lseek移动到得位置。答案是在末端,因为O_APPEND打开后,是一个原子操作:移动到末端,写数据。这是O_APPEND打开的作用。中间的插入时无效的。例如 : int fd = open("test.txt",RDWR | O_APPEND); lseek(fd,10,SEEK_SET); if(write(fd,buffer, 阅读全文

posted @ 2012-02-09 11:12 网名还没想好 阅读(2843) 评论(0) 推荐(0) 编辑

2012年2月8日

摘要: ssize_t是什么类型的?解释一:为了增强程序的可移植性,便有了size_t,它是为了方便系统之间的移植而定义的,不同的系统上,定义size_t可能不一样。在32位系统上 定义为 unsigned int 也就是说在32位系统上是32位无符号整形。在64位系统上定义为 unsigned long 也就是说在64位系统上是64位无符号整形。size_t一般用来表示一种计数,比如有多少东西被拷贝等。例如:sizeof操作符的结果类型是size_t,该类型保证能容纳实现所建立的最大对象的字节大小。 它的意义大致是“适于计量内存中可容纳的数据项目个数的无符号整数类型”。所以,它在数组下标和内存管理函 阅读全文

posted @ 2012-02-08 21:29 网名还没想好 阅读(2201) 评论(1) 推荐(0) 编辑

2012年1月26日

摘要: 在C程序中,文件由文件指针或者文件描述符表示。ISO C的标准I/0库函数(fopen, fclose, fread, fwrite, fscanf, fprintf等)使用文件指针,UNIX的I/O函数(open, close, read, write, ioctl)使用文件描述符。下面重点来说下,文件描述符是如何工作的。文件描述符相当于一个逻辑句柄,而open,close等函数则是将文件或者物理设备与句柄相关联。句柄是一个整数,可以理解为进程特定的文件描述符表的索引。先介绍下面三个概念,后面讲下open、close等操作以后,文件和文件描述符产生什么关系,以及fork后文件描述符的继承等问 阅读全文

posted @ 2012-01-26 20:59 网名还没想好 阅读(208) 评论(0) 推荐(0) 编辑

2012年1月13日

摘要: 进程一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程,wait 就会收集这个子进程的信息, 并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一直阻塞在这里,直到有一个出现为止。如果该进程没有子进程,则立即出错返回,返回值为-1(注意,是wait()函数立即返回,而不是说该父进程也跟着结束了,父进程里该语句后的内容还是要照样接着执行的)wait(等待子进程中断或结束)相关函数 waitpid,fork表头文件#include<sys/types.h>#include<sys/wait 阅读全文

posted @ 2012-01-13 21:29 网名还没想好 阅读(353) 评论(0) 推荐(1) 编辑

摘要: 一般是fork出子进程的父进程已经结束,子进程无法释放资源,形成了僵尸进程.进程已经死亡,但没有释放系统资源,包括内存和一些系统表等,如果这样的进程很多,会引发系统问题。用ps -el看出的进程状态如果是Z,就是僵尸进程。 S代表休眠状态;D代表不可中断的休眠状态;R代表运行状态;Z代表僵死状态;T代表停止或跟踪状态。 僵尸进程是指的父进程已经退出,而该进程dead之后没有进程接受,就成为僵尸进程.(zombie)进程怎样产生僵尸进程的:一个进程在调用exit命令结束自己的生命的时候,其实它并没有真正的被销毁,而是留下一个称为僵尸进程(Zombie)的数据结构(系统调用exit,它的作用是使. 阅读全文

posted @ 2012-01-13 20:50 网名还没想好 阅读(1580) 评论(0) 推荐(0) 编辑

摘要: C语言操作符优先级优先级运算符含 义要求运算对象的个数结合方向1()[]->.圆括号下标运算符指向结构体成员运算符结构体成员运算符自左至右2!逻辑非运算符1(单目运算符)自右至左~按位取反运算符++自增运算符--自减运算符-负号运算符(类型)类型转换运算符*指针运算符&地址与运算符sizeof长度运算符3*/%乘法运算符除法运算符求余运算符2(双目运算符)自左至右4+-加法运算符减法运算符2(双目运算符)自左至右5<<>>左移运算符右移运算符2(双目运算符)6<<=>>=关系运算符2(双目运算符)自左至右7==!=等于运算符不等于运 阅读全文

posted @ 2012-01-13 19:36 网名还没想好 阅读(577) 评论(0) 推荐(0) 编辑

摘要: int main(int argc,char * argv[])argv为指针的指针argc为整数char **argv or: char *argv[] or: char argv[][]main()括号内是固定的写法。下面给出一个例子来理解这两个参数的用法:假设程序的名称为prog,当只输入prog,则由操作系统传来的参数为:argc=1,表示只有一程序名称。argc只有一个元素,argv[0]指向输入的程序路径及名称:./prog当输入progpara_1,有一个参数,则由操作系统传来的参数为:argc=2,表示除了程序名外还有一个参数。argv[0]指向输入的程序路径及名称。argv[ 阅读全文

posted @ 2012-01-13 14:02 网名还没想好 阅读(548) 评论(0) 推荐(1) 编辑

2012年1月10日

摘要: 本文主要介绍如何在Linux环境下安装MATLAB分布式计算引擎。现 代计算机仿真技术对计算机硬件的需求和实际上已经停滞不前的CPU主频之间的矛盾日渐突出。相应推出的硬件解决方案无外乎多核、多处理器技术以及GPU技 术。我们将在以后的文章中讨论如何进行多核和多处理,或者GPU的程序设计。当单机的仿真模式也不能满足我们的计算需求的时候,我们只能求助于 MATLAB分布式计算。所谓的MATLAB分布式计算指的是利用客户端服务器模型,客户端提交计算需求,服务器负责调度、分配任务、控制计算过程以及回 收和合并计算结果的计算模式。MDCS和MATLAB客户端的关系如下图所示: 不 同于一般单机版本的MA 阅读全文

posted @ 2012-01-10 13:57 网名还没想好 阅读(4194) 评论(0) 推荐(0) 编辑

2012年1月5日

摘要: 1. 概述AVL树是最早提出的自平衡二叉树,在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。AVL树得名于它的发明者G.M. Adelson-Velsky和E.M. Landis。AVL树种查找、插入和删除在平均和最坏情况下都是O(log n),增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。本文介绍了AVL树的设计思想和基本操作。2. 基本术语有四种种情况可能导致二叉查找树不平衡,分别为:(1)LL:插入一个新节点到根节点的左子树(Left)的左子树(Left),导致根节点的平衡因子由1变为2(2)RR:插入一个新节点到根节点的右子树(Right)的右子树 阅读全文

posted @ 2012-01-05 16:38 网名还没想好 阅读(349) 评论(1) 推荐(1) 编辑