热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linuxc访问文件系统,linux上的c编程笔记文件系统的操作

linux的文件采用的是索引结构,文件存储在不连续的存储块中,这些块的块号记录于索引块中。索引块称为inode结构,inode结构中与用户

linux的文件采用的是索引结构,文件存储在不连续的存储块中,这些块的块号记录于索引块中。索引块称为inode结构,inode结构中与用户有关的信息:

mode   ------   文件的权限及类型

link count   ------   包含本inode项的目录个数

user id    ------   文件所有者的用户id

group id    ------   文件所有者所在组的id

size   ------   文件大小

access time   ------   文件上次被访问的时间

mod time   ------   文件上次被修改的时间

block list   ------   包含文件第一段的磁盘块号列表

indirect list   ------   包含文件其它内容(除第一段)的磁盘块号列表

文件类型记录在stat结构中的st_mode域中,可以用以下的宏来决定文件类型,每个宏的参数是stat结构中的st_mode值

S_ISREG()   ------   正规文件

S_ISDIR()   ------   目录文件

S_ISCHR() ------    字符设备文件

S_ISBLK() ------    块设备文件

S_ISFIFO()------    有名管道文件

S_ISLNK()------     符号链接文件

S_ISSOCK()----     套接字文件

顺序文件操作

打开文件:

#include

#include

#include

int open(const char* pathname,int oflag,.../*mode_t mode*/);

正确返回:文件描述符

错误返回:-1

参数描述:

pathname:待打开或创建的文件名

oflag:如何打开文件,必须包含以下三个中的一个

O_RDONLY   ------   只读方式打开

O_WRONLY ------    只写方式打开

O_RDWR      -------    读写方式打开

还可以按位逻辑加( | )组合下列标志

O_APPEND        ------          每次写文件从文末开始

O_CREAT          ------           文件不存在则创建,必须带第三个参数mode设置新文件的访问方式

O_EXCL              ------          检查文件是否存在,以及不存在时创建文件的情况

O_TRUNC          ------          如果文件存在,而且以只写或读写方式打开,将文件长度截至0

mode:如果用open创建文件就要使用,其用来规定文件所以者、用户组、其它用户的访问权限。逻辑加组合下列常量

中定义

S_IRUSER         ------            文件所有者的读权限位

S_IWUSER       ------            文件所有者的写权限位

S_IXUSER        ------             文件所有者的执行权限位

S_IRGRP           ------             文件用户组的读权限位

S_IWGRP         ------             文件用户组的写权限位

S_IXGRP          ------              文件用户组的执行权限位

S_IROTH         ------              文件其它用户的读权限位

S_IWOTH       ------               文件其它用户的写权限位

S_IXOTH        ------               文件其它用户的执行权限位

还可以用下列常量设置set _uid位和set_gid位:

S_ISUID

S_ISGID

当一个进程代表你创建文件时,权限位由该进程相联系的umask值所修改,进程利用如下公式决定文件的实际权限位:

mode &(~umask);

posted on 2005-12-07 16:10 vivip 阅读(182) 评论(0)  编辑 收藏 引用 所属分类: 学习笔记



推荐阅读
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了为什么要使用多进程处理TCP服务端,多进程的好处包括可靠性高和处理大量数据时速度快。然而,多进程不能共享进程空间,因此有一些变量不能共享。文章还提供了使用多进程实现TCP服务端的代码,并对代码进行了详细注释。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
author-avatar
俊然王
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有