unix环境高级编程——文件操作

来源:互联网 发布:嵌入式好还是java好 编辑:程序博客网 时间:2024/06/06 19:47


一、阻塞io操作和非阻塞io操作

对于阻塞io操作:当cpu得不到需要的文件数据的时候,则将自己挂起,直到有了数据,才能执行下面的操作。

非阻塞io:  当cpu得不到文件时候,其一直在轮询cpu,直达得到数据。


二、文件描述符

对于内核而言,所有打开的文件,都用文件描述符来引用。所有的文件操作都是由内核态完成的,当一个用户的进程创建一个文件时候,内核会给其返回一个文件描述符。

而当用户进程,对文件进行各类读写操作的时候,也是给内核传入文件描述符。这样,就可以对其文件进行操作了。


三、open函数

功能:调用open函数,可以打开或者创建一个文件。

输出:返回内核创建的文件描述符

#include <stdio.h>#include <fcntl.h>int main(void){  int fd;  if((fd = open("./a.txt",O_RDONLY|O_CREAT,S_IRUSR))<0)   {   }  close(fd);  printf("%d",fd);}


四、read,write函数

read函数:

输入:1、fd为文件描述符 2、要读入的指针 3、每次要读入的字符数


write函数:输入同read函数


下面代码为从a.txt向b.txt复制内容


#include <stdio.h>#include <fcntl.h>int main(void){  int fd,fd1;  int r;  int w;  char a[100];  if((fd = open("./a.txt",O_RDWR))<0)   {   }  fd1 = open("./b.txt",O_RDWR);  if((r=read(fd,a,10))>=0)  {     printf("read success,the readnum id %d",r);     printf("%s",a);  }  else  {   printf("read erro");  }  write(fd1,a,10);  close(fd1);  close(fd);  printf("%d",fd);}





0 0
原创粉丝点击