• linux系统编程之文件IO


    1.打开文件的函数open,第一个参数表示文件路径名,第二个为打开标记,第三个为文件权限

    代码:

    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include<stdio.h>
    
    int main()
    {
            int fd;
    
            fd = open("testopen1",O_CREAT,0777);
    
            printf("fd = %d
    ",fd);
    
            return 0;
    
    
    }

    效果测试:打印打开文件返回的描述符为3,同时创建了文件testopen1

     2.创建文件函数creat和关闭函数close

    使用代码

    #include <fcntl.h>
    #include<stdio.h>
    #include <unistd.h>
    #include<stdlib.h>
    int main(int argc,char *argv[])
    {
            int fd;
            if(argc < 2)
            {
                    printf("please run use ./app filename
    ");
                    exit(1);
            }
    
            fd = creat(argv[1],0777);
    
            printf("fd = %d
    ",fd);
            close(fd);
    
            return 0;
    
    
    }

    测试结果:

    3.写文件函数write,第一个参数表示要写入的文件的描述符,第二个参数表示要写入的内容的内存首地址,第三个参数表示要写入内容的字节数;

    写入成功返回写入的字节数,失败返回-1

     

    测试代码:

    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include<stdio.h>
    #include <unistd.h>
    #include<stdlib.h>
    #include<string.h>
    
    int main(int argc,char *argv[])
    {
            int fd;
            if(argc < 2)
            {
                    printf("please run use ./app filename
    ");
                    exit(1);
            }
    
            fd = open(argv[1],O_CREAT | O_RDWR,0777);
    
            if(fd == -1)
            {
                    printf("open file failed!");
                    exit(0);
            }
    
            char *con = "hello world!";
    
            int num =  write(fd,con,strlen(con));
            printf("write %d byte to %s",num,argv[1]);
    
            close(fd);
    
            return 0;
    
    
    }

    结果:hello world!写入hello文件成功

    查看当前系统最大打开文件个数

    4.读取文件read,第一个参数是文件描述符,第二个参数是存储读取文件内容的内存首地址,第三个参数是一次读取的字节数

    测试代码,完成文件复制

    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include<stdio.h>
    #include <unistd.h>
    #include<stdlib.h>
    #include<string.h>
    
    int main(int argc,char *argv[])
    {
            int fd_src,fd_des;
            char buf[1024];
    
            if(argc < 3)
            {
                    printf("please run use ./app srcfilename desfilename
    ");
                    exit(1);
            }
    
            fd_src = open(argv[1],O_RDONLY);
            fd_des = open(argv[2],O_CREAT | O_WRONLY | O_TRUNC,0777);
    
            if(fd_src != -1 && fd_des != -1)
            {
                    int len = 0;
                    while(len = read(fd_src,buf,sizeof(buf)))
                    {
                            write(fd_des,buf,len);
                    }
    
                    close(fd_src);
                    close(fd_des);
            }
    
    
            return 0;
    
          }

    效果查看,可见实现了文件open.c的拷贝

    需要程序源码的可以加我微信x241602私聊。
  • 相关阅读:
    vector, list, deque的选用(vector适用少量对象,list适用大量对象),以及效率问题
    MSYS是一个小型的GNU环境,包括基本的bash,make等等,与Cygwin大致相当(双击“D:MinGWmsys1.0msys.bat”,启动MinGW终端)
    你在为谁工作(陈凯元 2005 机械工业出版社)——薪水算什么,要为自己而工作;薪水只是工作的一种回报方式
    Net Core2.0下使用Dapper
    编程思想与算法
    NET Core Hosting
    windows/Linux下设置ASP.Net Core开发环境并部署应用
    OAuth2.0
    TF-IDF模型
    每分钟达百万的数据请求
  • 原文地址:https://www.cnblogs.com/huipengbo/p/7215720.html
Copyright © 2020-2023  润新知