Linux文件相关操作

来源:互联网 发布:手机助手网络共享 编辑:程序博客网 时间:2024/05/18 00:10

目录和文件

C语言编程里面需要用38进制数表示文件的权限,例如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的操作系统的知识。只能自己学习。


0 0
原创粉丝点击