TangCode的专栏

coding...

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

在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方式更为简单。



阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_17232031/article/details/46795559
文章标签: Linux C语言 ubuntu c
个人分类: 嵌入式技术
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭