Linux下文件编程

简介: 一、系统调用方式访问文件 1、创建文件:int creat(const char *filename,mode_t mode) filename为要创建的文件名(包含路径,默认为当前路径); mode为创建的文件属性,0无任何权限,1可执行,2可写,4可读,6可读可写; 要创建一个用户可读、可写、可执行,但是组没有权限,其他人可以读、可以执行的文件,并设置用户ID位。

一、系统调用方式访问文件

1、创建文件:int creat(const char *filename,mode_t mode)

filename为要创建的文件名(包含路径,默认为当前路径);

mode为创建的文件属性,0无任何权限,1可执行,2可写,4可读,6可读可写;

要创建一个用户可读、可写、可执行,但是组没有权限,其他人可以读、可以执行的文件,并设置用户ID位。那么,我们应该使用的模式是1(设置用户ID)、0(不设置组ID)、7(1+2+4,读、写、执行)、0(没有权限)、5(1+4,读、执行)即10705: 

2、打开文件:

int open(const char *pathname,int flags)

int open(const char *pathname,int flags,mode_t mode)

open函数有两个表示形式。pathname为要打开的文件名(包含路径,缺省为当前路径);

flags为打开文件的标志;

O_RDONLY以只读方式打开,O_WRONLY以只写的当时打开,O_RDWR以读写方式打开,O_APPEND以追加的方式打开

O_CREAT创建一个文件,O_EXEC如果使用O_CREAT而已经存在一个文件,会发生错误;

如果使用O_CREAT标志,则要使用第二个open函数,同时要指定mode属性;表示如果open打开的pathname不存在,则创建一个文件为mode属性的文件,mode指定文件的权限;

3、关闭:int close(int fd)

fd为文件描述符,文件描述符本身就是一个非负整数,在0---OPEN_MAX之中,OPEN_MAX表示一个线程同时能打开的最大文件数,现在一般的OPEN_MAX值为:1024

在open函数中,成功打开一个文件的函数返回值就是这个文件的描述符,close函数可通过这个描述符来关闭文件;

4、读写文件:

int read(int fd,const void *buf,size_t length)

int write(int fd,const void *buf,size_t length)

buf为缓冲区,length为读写的字节大小;表示在fd指定的文件中读取length个字节大小的长度,保存在buf的缓冲区中;

函数的返回值为读写的实际字节大小。

5、文件定位:int lseek(int fd,offset_t offset,int whence)

lseek()将文件读写指针相对于whence移动offen个字节,返回值为指针相对于文件头的位置;

whence的属性有:SEEK_SET相对于文件头,SEEK_CUR相对于读写指针当前位置,SEEK_END相对于文件末

6、访问判断:int access(const char *pathname,int mode)

二、库函数访问文件

1、创建和打开:FILE *fopen(const char *pathname,const char *mode)

r以只读方式打开,w以只写方式打开,如果文件不存在,则创建文件,否则文件被截断,a以追加的方式打开,如果文件不存在,则创建文件,r+以读写方式打开,w+以读写方式打开,如果文件不存在,则创建文件,否则文件被截断,a+以读和追加的方式打开,如果不存在,则创建新文件;

2、读写

size_t fread(void *ptr,size_t size,size_t n, FILE *stream)

从stream中读n个段为size字节,并放在ptr所指的数组中,返回值是实际读取的字节数;

size_t fwrite(const void *ptr,size_t size,size_t n,FILE *stream)

3、读写字符:

int fgetc(FILE *stream)

int fputc(int c,FILE *stream)

fscanf(FILE *stream,char *format[,argument....])格式化输入

int fprintf(FILE *stream,char *format[,argument....])

4、文件定位:int fseek(FILE *stream,long offset,int whence)

whence的属性有:SEEK_SET相对于文件头,SEEK_CUR相对于读写指针当前位置,SEEK_END相对于文件末

5、获取当前路径:char *getcwd(char *buffer,size_t size)

提供size大小的buffer,把当前路径保存到buffer中;

6、创建目录:int mkdir(char *dir,int mode)

返回值:0表示成功,1表示失败;

目录
相关文章
|
Linux 开发工具
7种比较Linux中文本文件的最佳工具
7种比较Linux中文本文件的最佳工具
1015 0
7种比较Linux中文本文件的最佳工具
|
存储 数据管理 Linux
区分Linux中.tar文件与.tar.gz文件的不同。
总之,".tar"文件提供了一种方便的文件整理方式,其归档但不压缩的特点适用于快速打包和解压,而".tar.gz"文件通过额外的压缩步骤,尽管处理时间更长,但可以减小文件尺寸,更适合于需要节约存储空间或进行文件传输的场景。用户在选择时应根据具体需求,考虑两种格式各自的优劣。
2229 13
|
安全 Linux
Linux赋予文件000权限的恢复技巧
以上这些步骤就像是打开一扇锁住的门,步骤看似简单,但是背后却有着严格的逻辑和规则。切记,在任何时候,变更文件权限都要考虑安全性,不要无谓地放宽权限,那样可能
512 16
|
Linux
【Linux】 Linux文件I/O常见操作技巧
以上就是Linux文件I/O操作的一些技巧,接纳它们,让它们成为你在Linux世界中的得力伙伴,工作会变得轻松许多。不过记住,技巧的运用也需要根据实际情况灵活掌握,毕竟,最适合的才是最好的。
408 28
|
存储 Linux 数据处理
深入剖析Linux中一切即文件的哲学和重定向的机制
在计算机的奇妙世界中,Linux的这套哲学和机制减少了不同类型资源的处理方式,简化了抽象的概念,并蕴藏着强大的灵活性。就像变戏法一样,轻轻松松地在文件、程序与设备之间转换数据流,标准输入、输出、错误流就在指尖舞动,程序的交互和数据处理因此变得既高效又富有乐趣。
279 4
|
安全 算法 Ubuntu
Linux(openssl)环境:编程控制让证书自签的技巧。
总结:在Linux环境中,OpenSSL是一个非常实用的工具,可以帮助我们轻松地生成自签名证书。通过上述三个简单步骤,即可为内部网络、测试环境或开发环境创建自签名证书。但在公共访问场景下,建议购买经过权威认证机构签发的证书,以避免安全警告。
783 13
|
Ubuntu Linux
"unzip"命令解析:Linux下如何处理压缩文件。
总的来说,`unzip`命令是Linux系统下一款实用而方便的ZIP格式文件处理工具。本文通过简明扼要的方式,详细介绍了在各类Linux发行版上安装 `unzip`的方法,以及如何使用 `unzip`命令进行解压、查看和测试ZIP文件。希望本文章能为用户带来实际帮助,提高日常操作的效率。
3929 12
|
Linux Shell
Linux系统下快速批量创建和删除文件的方法
总的来说,使用shell脚本来批量处理文件是一种非常强大的工具,只要你愿意花时间学习和实践,你会发现它能大大提高你的工作效率。
871 19
|
Linux
Linux 常用文件查看命令
`cat` 命令用于连接文件并打印到标准输出,适用于快速查看和合并文本文件内容。常用示例包括:`cat file1.txt` 查看单个文件,`cat file1.txt file2.txt` 合并多个文件,`cat > filename` 创建新文件,`cat >> filename` 追加内容。`more` 和 `less` 命令用于分页查看文件,`tail` 命令则用于查看文件末尾内容,支持实时追踪日志更新,如 `tail -f file.log`。
988 5
Linux 常用文件查看命令
|
监控 Linux
Linux基础:文件和目录类命令分析。
总的来说,这些基础命令,像是Linux中藏匿的小矮人,每一次我们使用他们,他们就把我们的指令准确的传递给Linux,让我们的指令变为现实。所以,现在就开始你的Linux之旅,挥动你的命令之剑,探索这个充满神秘而又奇妙的世界吧!
339 19