上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 22 下一页

2014年4月8日

摘要: 前言 在Linux系统中,用户分为三个部分( 所有者 同组人 其他 )。每个部分的权限又可以赋予读/写/执行权限。这样,文件的权限标记一共包含 9 个权限位。好了,很多朋友对于Linux权限的了解就仅限于此了。但,Linux目录权限和文件权限一样吗?内核对于权限的检查过程又是怎样的?如果你不清楚,本文将为你解惑。目录权限 1. 目录读权限 目录读权限允许读取目录的文件列表并显示出来,仅仅是允许读取文件列表,对于文件其他信息的读取不保证。 事实上,如果只有读权限没有写权限,那么执行查看目录后显示如下: 2. 目录写权限 如果要在目录里面创建文件,那么就需要写权限,别忘了,也要执行... 阅读全文
posted @ 2014-04-08 21:33 空山悟 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 前言 在之前的文章中,描述过如何用 fcntl 函数改变文件的状态标记。但,文件还有很多信息,如文件类型,权限设置,设备编号,访问时间等等。如果要获取这些信息,则使用函数 lstat 可以轻松达到这个目的。 下面的程序将使用该函数获取文件类型信息并判断它的类型。 但在这之前,先要说明文件信息结... 阅读全文
posted @ 2014-04-08 21:28 空山悟 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 前言 文件共享是指同时打开一个文件 用 dup 函数能对指定文件描述符再创建一个新的描述符,且这个新的描述符和旧的描述符指向的是同一个文件。 这两种行为有什么区别呢?下面给出的两张文件系统的图形象的解答了这个问题。文件共享 dup创建新描述符 小结 1. dup 函数的这种功能也可以用之前提到的 fctnl 函数来实现:dup( fd ) 等效于 fcntl( fd, F_DUPFD, 0) 2. 文件共享情况下的两个文件表项是存放在两个不同的进程中的。 阅读全文
posted @ 2014-04-08 17:14 空山悟 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 问题分析 输入:一个 n 元数组,元素和 t,元素个数 k。 输出:存在 or 不存在 k 个元素其和小于 t 约束:无解答思路 将数组按从小到大的顺序进行排序,然后判断这 k 个元素的和于 t 的大小关系。若其和小于 t 则此数组存在 k 个元素其和小于 t,否则不存在。代码实现#include #include #include #include using namespace std;// 输出数组void print(vector &v);// 判断数组中是否存在 k 个元素小于 tbool judge(vector v, int k, int t);int main(){ . 阅读全文
posted @ 2014-04-08 16:13 空山悟 阅读(607) 评论(0) 推荐(0) 编辑

2014年4月3日

摘要: 前言 当打开一个文件的时候,我们需要指定打开文件的模式( 只读,只写等 )。那么在程序中如何获取,修改这个文件的状态标志呢?本文将告诉你如何用 fcntl函数 获取指定文件的状态标志。解决思路 1. 对于获取文件状态标志,我们可以通过调用fcntl函数得到一个记录文件标志的整型变量,然后分别让它和各个状态标志常量进行&操作。若操作结果为正则文件具有此状态标志,否则文件没有此状态标志。( 如果是检查只读,只写,可读可写,则需要和ACCMODE相&,然后判断其结果是否为O_RDONLY,O_WRONLY,O_RDWR )。 2. 对于增加文件状态标志,我们可以先调用fcntl函数得 阅读全文
posted @ 2014-04-03 21:47 空山悟 阅读(610) 评论(0) 推荐(0) 编辑
摘要: 前言 假如要你写一段代码创建一个文件( 如果文件已经存在则返回失败 )。你会怎么做?本文将讨论两种做法,并进行分析。错误代码示例 1 if ((fd = open(pathname, O_WRONLY)) < 0) { 2 if (errno == ENOENT) { 3 if ((fd = creat(pathname, mode)) < 0) 4 err_sys("creat error"); 5 } 6 else { 7 err_sys("open error"); 8 } 9 }10 ... 阅读全文
posted @ 2014-04-03 21:36 空山悟 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 前言 本文介绍使用无缓冲IO函数进行文件读写。 所谓的无缓冲是指该IO函数通过调用系统调用实现,其实系统调用内部的读写实现也是使用了缓冲技术的。读写步骤 1. 打开文件 open 函数 2. 读写文件 read write 函数 3. ( 如果需要 )修改文件指针 lseek 函数 ( 可能和 2 交替进行 ) 4. 关闭文件 close 函数代码示例 1 // 2 // 本程序往一个文件中写入一个整型数组 3 // 然后读取这个数组并输出 4 // 5 6 #include 7 #include 8 #include 9 #include 10 #include... 阅读全文
posted @ 2014-04-03 21:35 空山悟 阅读(430) 评论(0) 推荐(0) 编辑

2014年4月2日

摘要: 前言 前篇文章解释了限制值的五种类型以及获取它们的方法。但是对于其中可能不确定的类型( 45类型 ),当限制值获取函数返回-1的时候,我们无法仅通过这个函数返回值-1来判断是限制值获取失败还是限制值是不确定的,因为这两种情况函数的返回值均为-1。这样就给编程带来了不变。本文将教你如何获取到未确定类型的限制值的真正情况。解决思路 可以在调用限制值获取函数之前,先将errno变量置为0。调用之后,如果函数返回-1,那么有两种情况:1. errno依然为0,这表示该限制值是不确定的。2. errno不为0,这表示限制值获取出错了;如果函数返回的数不是-1,那说明该限制值是确定的并已作为函数返回值.. 阅读全文
posted @ 2014-04-02 22:52 空山悟 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 前言 在POSIX标准中,定义了许多限制。这些限制大约分为五类,不同类型的限制获取的方式不一样。限制值分类 1. 不变的最小值 这类型的限制值是静态的,固定的。 2. 不变值 同上 3. 运行时可以增加的值 这类型的限制值在程序运行时会发生动态的变化。 4. 运行时不变的值( 可能不确定 ) 这类型的限制值在程序运行时不变,但它不是完全静态的,和内存空间等环境有关。 PS:所谓可能不确定是指这样的值可能是没有上限的 5. 路径名可变值( 可能不确定 ) 这类型的限制值随着路径的变化而变化。1,2类型限制值获取 对于1,2类型的限制值,我们可以直接到头文件中获取到: 1... 阅读全文
posted @ 2014-04-02 22:28 空山悟 阅读(544) 评论(0) 推荐(0) 编辑
摘要: 前言 这是一对非常容易混淆的概念。对于用户( 应用程序开发者 )来说,并不一定要严格区分其意义。因为在用户看来,它们都是以C函数的形式出现的。但了解二者的区别对我们掌握整个计算机系统有很大帮助。区别 1. 一部分库函数实现需要使用系统调用( 如 printf 库函数需要调用 write 系统调用 ) 2. 另一部分库函数实现不需要使用系统调用( 如strcpy 库函数不需要使用系统调用因为它不需要使用CPU特权指令 ) 3. 系统调用一定在内核空间执行,而库函数只有其中的系统调用部分执行时才会陷入内核( 如果该库函数使用了系统调用的话 ) 4. 系统调用往往提供的是需要使用CPU特权... 阅读全文
posted @ 2014-04-02 22:24 空山悟 阅读(316) 评论(0) 推荐(0) 编辑
上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 22 下一页

导航