摘要: 文件描述符与open函数一、文件描述符 对于文件描述符我们可以这样理解,文件描述符是作为打开文件的一个标记,且每个文件描述符对应一个唯一的打开文件。通常可以期望文件描述符0、1、2分别对应的是标准输入(STDIN_FILENO)、标准输出(STDOUT_FILENO)和标准错误输出(STDERR_FILENO)。 文件描述符会是一个非负数,其变化范围一般是0~OPEN_MAX。现在的UNIX系统中允许一个进程打开的文件相对已经不少了,但是这并不是无限制的,文件描述符是会有一个上限的。而且进程究竟能打开多少文件还会受到来自系统管理员的限制,因为打开过的的文件会占用系统资源,所以一般来说管理员会给 阅读全文
posted @ 2013-06-29 12:46 Mr_Yang2012 阅读(1780) 评论(0) 推荐(0) 编辑
摘要: 在UNIX(UNIX Like)环境中我们可以利用read和write这两个函数实现对一个文件的复制操作。不过现实中,我们要复制的文件中可能存在着空洞!如果我们不加处理,直接使用这两个函数进行对文件进行复制,那么拷贝的文件中,原来文件的空洞部分就会被字符0填写。当然有的时候我们并不希望将文件的空洞也一并带人到复制的文件中,所以这种情况我们需要进行一些细节上的处理。《UNIX 环境高级编程》中第四章练习题4.6就是一个这样的题目。 虽然说空洞部分实际上占用大小为0,但是这并不意味着从其它角度来看文件的空洞部分就是真的什么都没有。如果我们使用命令“od”来查看一个带有空洞的文件,我们会发现文... 阅读全文
posted @ 2013-03-24 09:17 Mr_Yang2012 阅读(1352) 评论(0) 推荐(0) 编辑
摘要: 题目描述:编写一个与3.12节中dup2功能相同的函数,要求不能调用fcntl函数,并且有正确的出错处理。题目分析:既然不能使用fcntl函数,那么我们就需要使用其他函数来达到类似的目的,这里列举出所有我们需要使用的函数。1、 open函数:这里我们不应该指定一个文件描述符并尝试复制它,因为实际中我们不能知道我们指定的文件描述符就一定是合法的,这个文件描述符可能未被使用,如果这样的话就会导致后面一系列的操作失败。或者是这个文件描述符指向了一个已经打开,而且对用户非常重要的文件(操作不当的后果可想而知)。所以用open函数打开一个已经存在的文件是非常靠谱的,我们就可以复制open函数返回的文件描 阅读全文
posted @ 2013-03-23 09:29 Mr_Yang2012 阅读(693) 评论(0) 推荐(1) 编辑
摘要: 这道题事让你求解函数:F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x 在闭区间[0, 100]间的最小值,我们需要做的即使先将函数进行求导,所得到的导函数为F‘(x)=42*x^6 + 48*x^5 + 21*x^2 + 10*x - y 。我们现在需要分析一下这个导函数在区间[0, 100]上的性质,由于y是一个常数,我们可以很容易分析出导函数在闭区间[0, 100]上是单调递增的。而且我们可以确定导函数在这个范围内一定有一个唯一的零点(注意y的上限,不过再想一想,100的7次方很大了,远远大于1e10)。我们就可以使用二分的方法把这个零点位置的近似值找到(注意.. 阅读全文
posted @ 2013-01-07 09:20 Mr_Yang2012 阅读(740) 评论(0) 推荐(0) 编辑
摘要: 1.1 堆的概念 堆这个概念最早是威廉姆斯在堆排序中被提出来的,堆是一种基于完全二叉树构建的数据结构(这种基于完全二叉树建立的堆我们称为二叉堆),因此对具有完全二叉树的所有性质。不过堆也有自己特有的性质,我们通常把堆分为最大堆和最小堆。在最大堆中,对于任意的节点k一定有k节点的子节点上存储的值不大于k节点上存储的值(如果是结构体数据需要依据某些变量来进行比较)。根据最大堆的性质我们可以得出最小堆的性质:对于任意的节点k一定有k节点的子节点上存储的值不小于k节点上存储的值。1.2 完全二叉树的性质 在我们了解堆之前,我们必须要先熟悉一下完全二叉树的性质。虽然有些性质并不是完全二叉树特有的,但是由 阅读全文
posted @ 2012-12-02 22:38 Mr_Yang2012 阅读(2528) 评论(1) 推荐(1) 编辑
摘要: 说起屏障这个东西,相信对于大多数朋友来说比较陌生,不过要是说起pthread_join这个函数,相信都比较熟悉。我们通常使用这个函数来等待其它线程结束,例如主线程创建一些线程,这些线程去完成一些工作,而主线程需要去等待这些线程结束。其实pthread_join就实现了一种屏障。我们可以对屏障这样... 阅读全文
posted @ 2014-07-31 17:11 Mr_Yang2012 阅读(3203) 评论(0) 推荐(0) 编辑
摘要: creat函数creat函数说明 creat函数用于创建 一个文件并以只写的方式打开。如果同名文件已经存在,那么文件长度将会被截短为0。 (注:文中同名文件指的是路径和文件都相同)creat函数的原型: int creat(const char* pathname, mode_t mode); 若函数执行成功返回打开文件的描述符(注意文件是以只写的方式打开),失败返回-1并设置errno的值。creat函数的论述 creat函数使用不够灵活,确切的说很多情况不能满足我们的需求,首先因为这个函数在创建成功目标文件之后只能以只写的方式打开。这样多少会对一些程序员期望的操作带来一些不便,程序员可能会 阅读全文
posted @ 2013-06-29 15:31 Mr_Yang2012 阅读(1464) 评论(0) 推荐(0) 编辑
摘要: 题目描述:编写一个与3.12节中dup2功能相同的函数,要求不能调用fcntl函数,并且有正确的出错处理。题目分析:既然不能使用fcntl函数,那么我们就需要使用其他函数来达到类似的目的,这里列举出所有我们需要使用的函数。1、 open函数:这里我们不应该指定一个文件描述符并尝试复制它,因为实际中我们不能知道我们指定的文件描述符就一定是合法的,这个文件描述符可能未被使用,如果这样的话就会导致后面一系列的操作失败。或者是这个文件描述符指向了一个已经打开,而且对用户非常重要的文件(操作不当的后果可想而知)。所以用open函数打开一个已经存在的文件是非常靠谱的,我们就可以复制open函数返回的文件描 阅读全文
posted @ 2013-03-23 10:01 Mr_Yang2012 阅读(702) 评论(2) 推荐(0) 编辑
摘要: 最近笔者这里ACM的省级比赛很快就要开始了,笔者在团队中正好负责计算几何。尽管水平只是能算入门级别的,但是笔者还是想和各位分享一下有关自己对计算几何的认识和了解。 要说计算几何中最简单的概念应该是叉积了,尽管叉积比较简单。但是却非常重要,因为在计算几何中很多地方要用上叉积。比如:判断线段拐向、三点共线问题、两条线是否相交、极角排序 中的应用等。笔者用下面一段来简述一下叉积。//向量的叉积/* 计算行列式 | x1-x0 y1-y0 | | x2-x0 y2-y0 | 的结果(向量的叉积 AB X AC)*/#include<iostream>using namespa... 阅读全文
posted @ 2012-05-19 23:23 Mr_Yang2012 阅读(303) 评论(0) 推荐(0) 编辑