码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-08-29 21:50:15      阅读:219      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!