良许Linux教程网 干货合集 Linux系统打开文件的正确方法

Linux系统打开文件的正确方法

Linux系统中一切皆为文件,那么在文件该怎样打开呢?本篇文章主要和大家分享一下Linux系统打开文件的方法,有需要的小伙伴可以参考一下。

Linux系统打开文件的正确方法    ​

文件的打开open函数 涉及头文件: ubuntu 头文件所在目录:/usr/include/x86_64-linux-gnu/sys #include #include #include 具体函数: L 参数解释: 功能:给文件出昂见一个新的文件描述符, pathname:指定一个文件路径 flags: 读取文件的模式O_RDONLY, O_WRONLY, or O_RDWR mode:读取文件的权限指定 S_IRWXU == 00700 用户有 读写执行权限 S_IRUSR 00400 user has read permission S_IWUSR 00200 user has write permission S_IXUSR 00100 user has execute permission S_IRWXG 00070 group has read, write and execute permission S_IRGRP 00040 group has read permission S_IWGRP 00020 group has write permission S_IXGRP 00010 group has execute permission S_IRWXO 00007 others have read, write and execute permission S_IROTH 00004 others have read permission S_IWOTH 00002 others have write permission S_IXOTH 00001 others have execute permission

返回值: successfully 返回一个文件描述符非负整数,

 #include 
 #include 
 #include 
 #include 
 int main(int argc, char*argv[])
 {
         int fd = 0;
 
 fd=open("./open_1.c",O_RDONLY);
 printf("fd = %d \r\n", fd);
 
         return 0 ;
 }
 1234567891011121314
 输出结果:
 fd = 3
 12

读文件

这里只有读取的权限,尝试这读取下这个文件的内容并输出至屏幕; 这里就要用到 read 函数: man 2 read 查看具体解释 #include ssize_t read(int fd, void *buf, size_t count); 功能: 从文件描述符 fd中读取 count个字节 放入buf中; 返回值: count =0 返回0 count 不为零, 文件不为空时,返回文件当前所在位置; 失败,返回-1;

 读取结果:
 buffer=  #include 
 #include 
 #include 
 #include 
 #include 
 int display_file(int,int);
 int main(int argc, char*argv[])
 {
         int fd = 0;
 
 fd=open("./open_1.c",O_RDONLY);
 //printf("fd = %d \r\n", fd);
 display_file(fd, 1024);
         return 0 ;
 }
 
 int display_file(int fd, int count)
 {
         char buffer[100];
         memset(buffer, 0, sizeof(buffer));
         if(0 > fd  || 0 >= count)
                 return -1;
         int read_num = read(fd,buffer,count);
                 if (read_num 
                  return -1;
         else
                 return read_num;
         fprintf(stdout,"buffer=  %s read_num = %d ",buffer, read_num);
 
 }
  read_num = 520
  好巧不巧刚好读取了520个字节哈哈
 123456789101112131415161718192021222324252627282930313233

这里需要注意的是: buffer申请的空间大小必须大于等于 count ,不然会报总线错误;

写文件

man 2 write #include ssize_t write(int fd, const void *buf, size_t count); 参数: fd:需要写的文件描述符; buf:将buf中的内容写入 fd中 count: 一次写入的字节数

 #include 
 #include 
 #include 
 #include 
 #include 
 int display_file(int,char *, int);
 int main(int argc, char*argv[])
 {
         int fd = 0;
         int fdw = 0;
         char buffer[1024];
 memset(buffer, 0, sizeof(buffer));
 fd=open("./open",O_RDONLY);
 fdw = open("./open_2", O_RDWR|O_CREAT, S_IWUSR|S_IRUSR|S_IROTH);
 //printf("fd = %d \r\n", fd);
 display_file(fd, buffer,1024);
 write_to_file(fdw,buffer,1024);
         return 0 ;
 }
 
 int display_file(int fd, char * buf, int count)
 {
         char * buffer = NULL;
         buffer = buf;
         if(0 > fd  || 0 >= count || NULL == buf)
                 return -1;
         int read_num = read(fd,buffer,count);
         if (read_num 
                 return -1;
         else
                 return read_num;
         fprintf(stdout,"buffer=  %s read_num = %d \r\n",buffer, read_num);
 
 }
 
 int write_to_file(int fd,char* buff, int count)
 {
         int write_num = write(fd, buff,count);
         if (write_num 
                 return -1;
         else
                 return  write_num;
 
 }

至此关于Linux系统大家文件的方法分享完毕,大家有任何问题都可以通过评论区将问题提交给我们

以上就是良许教程网为各位朋友分享的Linux系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你!

137e00002230ad9f26e78-265x300

本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部