首页 > 其他 > 详细

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

时间:2015-08-29 21:47:08      阅读:195      评论:0      收藏:0      [点我收藏+]


一、阻塞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);

}





版权声明:本文为博主原创文章,未经博主允许不得转载。

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

原文:http://blog.csdn.net/a879365197/article/details/48088795

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!