linux系统编程之文件IO

Posted lovejobs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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\\n",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\\n");
                exit(1);
        }

        fd = creat(argv[1],0777);

        printf("fd = %d\\n",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\\n");
                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\\n");
                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的拷贝

 

以上是关于linux系统编程之文件IO的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统管理之总结

Unix/Linux 编程:网络编程之 IO模型

JSP编程专题1之JSP基础

(51)LINUX应用编程和网络编程之六Linux高级IO

Python 之 Socket编程(TCP/UDP)

Linux系统编程-文件IO标准库IO刷新缓冲模式