Linux文件相关操作
来源:互联网 发布:手机助手网络共享 编辑:程序博客网 时间:2024/05/18 00:10
目录和文件
在C语言编程里面需要用3个8进制数表示文件的权限,例如777表示这个用户用户组的成员其他成员对于这个文件有执行,读写,权限。
第一个数字表示:本用户的权限,相当于User
第二个数字表示:其他用户组的权限,相当于Group
第三个数字表示:其他用户的权限:相当于Other权限
4表示可读,2表示可写,1表示可执行
在文件操作的时候经常遇到某些错误,比如向只读文件写内容。这些错误其实都是一切数字,为了方便阅读,运用了宏定义。错误的捕捉和输出是利用错误号和strerror函数实现的。可以把错误返回一个语句。
创建目录路函数mkdir()
函数原型int mkdir(char *pathname,mode_t mode);
第一个参数是路径。第二个是权限,值得注意的是要用0开头表示8进数。成功则返回0
删除目录函数rmdir()
函数原型 int mkdir(char *pathname);成功返回0,不成功返回错误号,和创建目录函数是一样的,我们只需要创建一个错误,externint errno;
如果出错会自动捕捉。去掉extern也可以,但是用其他的变量名字就需要把函数返回值进行赋值然后在判断了,这是为什么呢?
文件的创建函数creat()
int creat(char *pathname,mode_t mode);
要包含<sys/types.h><sys/stat.h><fcntl.h>
文件的删除函数remove()
int remove(char *pathname);
建立临时文件函数mkstemp()
这里的临时文件是程序运行时候为了存储中间数据建立的文件。计算机重启的时候会删除。如果在程序运行的时候需要把文件短时间写到磁盘上可以使用mkstemp()
int mkstemp(char *template);
参数template 表示需要建立的临时文件名的字符串。文件名字字符串的后6个字符必须是XXXXXX,大写的X,会以读写方式和0600权限打开该文件,如果文件不存在,则会建立该文件,返回值是打开文件的编号,如果建立不成功则返回-1;
值得注意的是template名称字符串必须声明为数组,不可以为字符指针;
文件的打开open
文件的打开是从磁盘里面找到一个文件,返回一个整形的打开文件的顺序编号。
open() 函数原型、
int open(char *pathname,int flags);
int open(char *pathname,int flags,mode_t mode);
打开不成功返回-1;
文件的关闭close
int close(int fd);fd是打开文件的编号。这个操作会让数据写回磁盘。并且释放资源。成功返回0,不成功返回-1;
文件的写入write
ssize_t write(int fd,void *buf,size_t count);
fd,表示打开文件的编号,buf表示要写入的字符串,count是写入的个数。
如果写入成功则返回实际写入的字节数目,否则返回-1,可以用errno捕捉。
文件读取read()
ssize_t read(int fd,void*buf,size_tcount);
返回值表示读取的字符个数,如果返回值是0,表示没有内容可读,或者到达文件末尾。不成功返回-1;
文件读写位置的操作lseek()
每一个已经打开的文件都有一个读写位置,打开文件通常是文件的开头。若以追加的方式打开,读写位置会指向文件的末尾。
可以用lseek()函数在文件内容移动位置。
lseek();off_t lseek(int fd,off_f offset,int whence);
offset 表示根据whence 确定位置移动量。
whence有下面这写值
SEEK_SET offset为新的位置。
SEEK_CUR 以目前读写位置增加offset个长度
SEEK_END,在文件的末尾增加offset个移动量。
缓冲区数据写入到磁盘函数sync()
缓冲区:linux系统对文件的一种处理方式,在对文件进行写入操作时候,并没有立即对数据写入磁盘,而是把数据写入到缓冲区。如果需要把数据立即写入磁盘可以使用sync();
int sync(void);
包含与<unistd.h>
使用的时候只需在写入操作后面sync();
fsync();int fsync(int fd);这个可以指定打开文件的编号,0表示成功。
文件的锁定:flock();
int flock(int fd,int operation);
operation:
LOCK_SH,共享锁。
LOCK_EX 互斥锁
LOCK_UN 解锁
LOCK_NB 无法建立锁定的时候,这个操作不可中断,马上返回进程。
还有一些错误类型,这写都是linux的操作系统的知识。只能自己学习。
- linux文件相关操作
- Linux文件相关操作
- Linux文件相关操作
- linux C文件操作相关
- Linux----3-----文件相关操作
- linux c 文件操作相关
- Linux脚本文件相关操作
- linux文件操作相关函数
- linux 文件操作相关命令
- Linux---快捷键+文件相关操作
- linux文件操作相关命令
- linux 中对文件的相关操作
- linux 下利用vi操作文件相关
- Linux常用命令 5 文件相关操作
- Linux文件目录操作相关命令
- Linux C 文件操作相关整理
- 高效 Linux 4 文件相关操作
- Linux文件权限管理及相关操作
- C++著名程序库的比较和学习经验
- hdu 1026 Ignatius and the Princess I(bfs)
- Driect2D不支持YUV,必须转换成RGB32才能显示
- Leetcode - Tree- Populating Next Right Pointers in Each Node
- 操作系统学习:栈空间和堆空间
- Linux文件相关操作
- memory ordering
- 拷贝增量文件
- Python 最好用的第三方 http 库-Requests介绍
- CSS2.1 特殊性、继承、层叠规则
- Tomcat 数据源配置
- 关于MyEclipse8.5 错误 background indexer crash recovery java.lang.stackoverflowerror
- iOS 各种控件默认高度(图示)
- C#写的图像细化算法