linux中描述符和标准IO流对文件的基本操作

原创 2015年07月07日 23:01:27

在linux中,对于文件的操作可以使用文件描述符来对文件进行操作,也可以使用传统的标准的IO(即VC6.0中所对文件的操作),下面利用一个文件拷贝的程序使用两种方式展示两种文件操作的不同之处。

文件描述符方式:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#define FilePath1 "/home/farsight/dir/aa.txt"
#define FilePath2 "/home/farsight/dir/bb.txt"


int main(int argc,char *argv[]){
int fd1,fd2,fr=0;
int ret1,ret2;
char buf[]={"I Love Linux!"};
char rbuf[4096];
fd1=open(FilePath1,O_RDWR);
if(fd1==-1){
perror("OPEN THE aa.txt");
exit(EXIT_FAILURE);
}
ret1=write(fd1,buf,strlen(buf));
if(ret1==-1){
perror("WRITE THE aa.txt");
exit(EXIT_FAILURE);
}
else{printf("WRITE aa.txt IS SUCCESED!\n");}

fd2=open(FilePath2,O_RDWR|O_CREAT);
if(fd2==-1){
perror("OPEN THE bb.txt");
exit(EXIT_FAILURE);
}
lseek(fd1,0,SEEK_SET);
fr=read(fd1,rbuf,sizeof(buf));
if(fr==0){
printf("COPY IS FAILED!\n");
}
if(fr>0){
write(fd2,buf,fr);
printf("COPY IS SUCCESSED!\n");
close(fd1);
close(fd2);
}

return 0;
}

标准IO方式:

#include<stdio.h>

int main(int argc, char *argv[])  
{
    int c;
    FILE *fp1, *fp2; 
    fp1 = fopen(argv[1], "rb");   
    if(fp1==NULL){
        printf( "Open failure!"); 
        return -1;
    }
    fp2 = fopen(argv[2], "wb");  
    if(fp2==NULL){
        printf("Open failure!");
        return -1;
    }
    while((c=fgetc(fp1))!=EOF){   
        fputc(c, fp2);
    }
    fclose(fp1);  
    fclose(fp2);
    return 0;
}

相比之下,标准IO方式更为简单。



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

标准的I / O流和文件描述符相互关联(文件描述符与文件指针间的转换)

表头文件:#include 定义函数:FILE * fdopen(int fildes,const char * mode); 说明:fdopen()会将参数fildes 的文件描述词,转换为对应...
  • chunlovenan
  • chunlovenan
  • 2015年11月10日 09:53
  • 829

Linux操作系统-标准IO库(1)

Linux操作系统—标准I/O库(1)(2015-8-3)分类:Linux操作系统  不仅在linux,在很多操作系统上都实现了标准I/O库,该库由ANSI C标准说明。标准I/O库是在系统调用函数基...
  • LazyBone1994
  • LazyBone1994
  • 2015年08月04日 11:38
  • 829

Shell的文件描述符操作,包括标准输入,标准输出,自定义文件描述符

Abstract: 1) Linux Shell 命令的标准输入、标准输出、标准错误,及其重定位; 2)Linux Shell 操作自定义文件描述符;     文件描述符是与文件...
  • nyist327
  • nyist327
  • 2014年12月16日 14:31
  • 2183

linux 文件IO和标准IO

2010-03-25 16:53 668人阅读 评论(0) 收藏 举报 今日阅读《UNIX环境高级编程2》才发现一些以前从未注意过的细节。   linux编程使用的open、close、re...
  • bodogbo11
  • bodogbo11
  • 2013年01月03日 22:56
  • 452

Linux文件操作总结(系统调用和标准IO库函数)

一、用于访问设备驱动程序的底层函数
  • jipingyuan
  • jipingyuan
  • 2014年07月31日 20:02
  • 1233

ANSI文件IO管理以及POSIX文件及目录管理

ANSI文件IO管理ANSI标准下的C库函数建立在底层系统调用之上,即C函数库文件访问函数的实现中使用了低级文件IO系统调用。 ANSI标准的C库中的文件处理函数`为了减少系统调用的次数,采...
  • Road_To_Fight
  • Road_To_Fight
  • 2016年04月12日 11:33
  • 555

标准IO下对文件权限的修改

修改文件权限 1.int chmod(const char * path, mode_t mode); 函数说明:chmod()会依参数mode 权限来更改参数path 指定文件的权限。 参数 ...
  • leumber
  • leumber
  • 2017年04月28日 17:55
  • 468

Linux/UNIX之标准IO库

标准IO库 当打开一个流时,标准I/O函数fopen返回一个指向FILE对象的指针。该对象通常是一个结构,它包含了标准I/O库为管理该流所需的所有信息,包括:用于实际I/O的文件描述符、指向用于该缓...
  • walkerkalr
  • walkerkalr
  • 2014年04月22日 11:55
  • 846

IO流的读写操作

Java IO流的分类:         除了按照流的方向可以把流划分为输入流和输出流两类,按照流读写数据的基本单位把流划分为字节流和字符流两类以外,还可以按照流是否直接连接实际数据源,例如文件、网...
  • eclipse_yin
  • eclipse_yin
  • 2016年05月12日 20:35
  • 1087

Linux文件描述符的简单操作

大家都知道,Linux系统将每个对象当做文件来处理,
  • RHEL_admin
  • RHEL_admin
  • 2014年07月17日 15:48
  • 941
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux中描述符和标准IO流对文件的基本操作
举报原因:
原因补充:

(最多只允许输入30个字)