广告
返回顶部
首页 > 资讯 > 操作系统 >Linux之操作文件的系统调用
  • 713
分享到

Linux之操作文件的系统调用

linux文件操作系统调用linux操作文件 2022-06-04 23:06:55 713人浏览 安东尼
摘要

目录1.打开文件参数介绍2. 读文yXLlS件3. 写文件4.关闭分析题练习题系统调用和库函数的区别需要引入的头文件: #inlcude<unistd.h> 1.打开文件 打开一个已存在的文件 i

目录
  • 1.打开文件
    • 参数介绍
  • 2. 读文yXLlS
    • 3. 写文件
      • 4.关闭
        • 分析题
          • 练习题
            • 系统调用和库函数的区别

              需要引入的头文件:

              
              #inlcude&lt;unistd.h>
              

              1.打开文件

              打开一个已存在的文件

              
              int open(const char *pathname, int flags);
              

              新建一个文件并创建权限

              
              int open(const char *pathname, int flags, mode_t mode);

              参数介绍

              pathname:将要打开的文件路径和名称

              flags:打开标志

              标志介绍:

              
              The  argument  flags  must  include  one of the following access modes:
              O_RDONLY, O_WRONLY, or O_RDWR.  These request opening  the  file  read-
              only, write-only, or read/write, respectively.
              

              O_RDONLY 只读打开

              O_RDWR 读写打开

              O_CREAT 文件不存在则创建

              O_APPEND 文件末尾追加

              O_TRUNC 清空文件,重新写入 mode

              
              The following symbolic constants are provided for mode:
              
              S_IRWXU  00700 user (file owner) has read,  write,  and  execute permission
                                     
              
              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
              

              返回值:文件描述符

              2. 读文件

              
              ssize_t read(int fd, void *buf, size_t count);
              

              参数介绍

              fd:对应打开的文件描述符buf : 存放数据的空间count: 计划一次从文件中读多少字节数据返回值: 实际读到的字节数

              3. 写文件

              
              ssize_t write(int fd, const void *buf, size_t count);

              参数介绍:

              fd :对应打开的文件描述符buf:存放待写入的数据count:计划一次向文件中写入多少数据

              4.关闭

              
              int close(int fd);

              fd :对应的文件描述符

              分析题

              如果父进程先打开一个文件,fork 后子进程是否可以共享使用?

              文件内容

              在这里插入图片描述

              代码

              
              #include<stdio.h>
              #include<unistd.h>
              #include<assert.h>
              #include<fcntl.h>
              #include<stdlib.h>
              
              int main()
              {
                  char buff[128] = {0};
              
                  int fd = open("myfile.txt", O_RDONLY);
              
                  pid_t pid = fork();
                  assert(pid != -1);
              
                  if (pid == 0)
                  {
                      read(fd, buff, 1);
                      printf("child buff = %s\n", buff);
              
                      sleep(1);
                      read(fd, buff, 1);
                      printf("child buff = %s\n", buff);
              
                  }
                  else
                  {
                      read(fd, buff, 1);
                      printf("parent buff = %s\n", buff);
              
                      sleep(1);
                      read(fd, buff, 1);
                      printf("parent buff = %s\n", buff);
                  }
              
                  close(fd);
              
                  exit(0);
              }
              
              

              运行结果:

              在这里插入图片描述

              结论

              由于 fork 创建的子进程的 PCB 是拷贝父进程的,子进程的 PCB 中的文件表指向打开文件的指针只是拷贝了父进程 PCB 中的值,所以父子进程共享父进程 fork 之前打开的所有文件描述符。

              在这里插入图片描述

              练习题

              完成对一个文件的复制(类似命令:cp)

              原文件内容为:

              在这里插入图片描述

              代码:

              
              #include<stdio.h>
              #include<unistd.h>
              #include<fcntl.h>
              #include<stdlib.h>
              #include<assert.h>
              
              int main(void)
              {
                  char buff[128] = {0};
              
                  int fdr = open("myfile.txt", O_RDONLY);
                  assert(fdr != -1);
              
                  int fdw = open("newfile.txt", O_WRONLY | O_CREAT, 0600);
                  assert(fdw != -1);
              
                  int n = 0;
                  while (n = read(fdr, buff, 128) > 0)
                  {
                      write(fdw, buff, n);
                  }
              
                  close(fdr);
                  close(fdw);
                  
                  exit(0);
              }
              
              

              运行示例:

              可以看到newfile.txt创建成功

              在这里插入图片描述

              系统调用和库函数的区别

              区别: 系统调用的实现在内核中,属于内核空间,库函数的实现在函数库中,属于用户空间。

              系统调用执行过程:

              在这里插入图片描述

              到此这篇关于linux之操作文件的系统调用的文章就介绍到这了,更多相关Linux文件系统调用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

              --结束END--

              本文标题: Linux之操作文件的系统调用

              本文链接: https://www.lsjlt.com/news/21485.html(转载时请注明来源链接)

              有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

              本篇文章演示代码以及资料文档资料下载

              下载Word文档到电脑,方便收藏和打印~

              下载Word文档
              猜你喜欢
              • Linux之操作文件的系统调用
                目录1.打开文件参数介绍2. 读文yXLlS件3. 写文件4.关闭分析题练习题系统调用和库函数的区别需要引入的头文件: #inlcude<unistd.h> 1.打开文件 打开一个已存在的文件 i...
                99+
                2022-06-04
                linux文件操作系统调用 linux操作文件
              • Linux操作文件系统怎么调用
                本篇内容介绍了“Linux操作文件系统怎么调用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!需要引入的头文件:#inlcude<uni...
                99+
                2023-06-21
              • Linux操作文件的底层系统如何调用
                这篇文章主要介绍“Linux操作文件的底层系统如何调用”,在日常操作中,相信很多人在Linux操作文件的底层系统如何调用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux操作文件的底层系统如何调用”的疑...
                99+
                2023-07-06
              • Linux操作文件的底层系统怎么调用
                这篇文章主要介绍了Linux操作文件的底层系统怎么调用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Linux操作文件的底层系统怎么调用文章都会有所收获,下面我们一起来看看吧。linux操作系统奉行一切皆文件的...
                99+
                2023-07-05
              • Linux 文件系统的操作实现
                此读书笔记比较主要记录文件系统的相关操作。 磁盘与目录的容量 磁盘的整体数据是在superblock块中,但是每个个别文件的容量则在inode当中记载,常用来显示磁盘使用量的两个命令 df: 列出文件系统的整体磁盘使用...
                99+
                2022-06-04
                Linux 文件系统操作 Linux 文件系统
              • 详谈Node.js之操作文件系统
                1. 同步方法与异步方法 在Node.js中,使用fs模块来实现所有有关文件及目录的创建、写入及删除操作。,在fs模块中,所有对文件及目录的操作都可以使用同步与异步这两种方法。这两者区别是:同步方法立即返回...
                99+
                2022-06-04
                文件系统 操作 Node
              • Golang函数的系统调用和文件系统操作的应用技巧
                随着计算机技术的不断发展,各种语言也应运而生。其中,Golang(又称GO语言)因为其高效、简单、易于学习的特点,在近年来越来越受到开发者们的青睐。在Golang中,函数的系统调用和文件系统操作是常见的应用技巧。本文将详细介绍这些技巧的应用...
                99+
                2023-05-17
                Golang函数 文件系统操作 系统调用
              • Node.js之操作文件系统的示例分析
                这篇文章给大家分享的是有关Node.js之操作文件系统的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1. 同步方法与异步方法在Node.js中,使用fs模块来实现所有有...
                99+
                2022-10-19
              • Linux操作系统下隐藏文件的方法
                这篇文章主要讲解了“Linux操作系统下隐藏文件的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux操作系统下隐藏文件的方法”吧!一. 概述 目前通用的隐藏文件方法还是hooksy...
                99+
                2023-06-17
              • Linux操作系统文件系统的安装和卸载方法
                这篇文章主要介绍“Linux操作系统文件系统的安装和卸载方法”,在日常操作中,相信很多人在Linux操作系统文件系统的安装和卸载方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux操作系统文件系统的安...
                99+
                2023-06-17
              • Java面试:如何在Linux文件系统中操作文件?
                在Java开发中,经常需要进行文件操作,比如读取文件内容、写入文件内容、创建文件夹等等。而在Linux操作系统中,文件系统是一种非常重要的资源,因此掌握在Linux文件系统中操作文件的技能也变得尤为重要。本文将介绍在Java中如何在Lin...
                99+
                2023-08-04
                面试 linux 文件
              • Linux文件系统的目录和操作有哪些
                这篇文章主要讲解了“Linux文件系统的目录和操作有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux文件系统的目录和操作有哪些”吧!内存使用部分目录说明/binbin是Binar...
                99+
                2023-06-29
              • linux操作之清空文件方式
                目录一、重定向到null二、通过echo命令清空文件三、通过‘true’命令重定向来清空文件四、使用cat/cp/dd实用工具及/dev/null设备来清空文件1、cat2、cp3、dd  4、/...
                99+
                2023-04-26
                linux清空文件 linux操作 清空文件方式
              • 【操作系统实验】Ubuntu Linux 虚拟机目录文件操作
                文章目录 目录的创建和删除创建目录删除目录 文件的创建和删除创建文件删除文件 复制目录、文件移动目录、文件 目录的创建和删除 创建目录 mkdir 命令 功能描述:mkdir命令...
                99+
                2023-10-23
                linux ubuntu 服务器 bash vim
              • Linux系统调用之lseek函数
                前言 如果,想要深入的学习Linux系统调用函数lseek了话,还是需要去阅读Linux系统中的帮助文档的。 具体输入命令: man 2 lseek 即可查阅到完整的资料信息。 lseek函数 lseek函数是Linux系统API中的...
                99+
                2023-08-18
                linux 运维 服务器
              • Linux操作文件的底层系统调用,探究父子进程是否可以共享文件问题
                目录open()——打开或者创建一个文件write()read()close()lseek函数应用:利用读写对文件进行复制打开文件后,fork的子进程能否共享和父进程共享访问同一个文件?总结lin...
                99+
                2023-03-23
                Linux操作文件 Linux父子进程 Linux进程共享文件
              • Linux操作系统 进程之间的通信
                 进程之间的通信预备知识:用户态和内核态,当一个进程在执行用户自己的代码时处于用户运行态(用户态);当一个进程因为系统调用陷入内核代码中执行时处于内核运行态(内核态)。进程之间的通信(Inter Processs Communic...
                99+
                2023-06-05
              • ASP文件的NumPy处理技巧:适用于Linux操作系统
                NumPy 是 Python 中一个常用的科学计算库,它提供了高效的多维数组操作,以及对这些数组进行数学运算的各种函数。在数据处理领域,NumPy 已经成为了不可或缺的工具。本文将介绍如何在 ASP 文件中使用 NumPy 进行数据处理的...
                99+
                2023-08-14
                文件 linux numy
              • linux文件系统的大小怎么调整
                今天小编给大家分享一下linux文件系统的大小怎么调整的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了...
                99+
                2022-10-19
              • Python全栈之路系列之文件操作
                Python可以对文件进行查看、创建等功能,可以对文件内容进行添加、修改、删除,且所使用到的函数在Python3.5.x为open,在Python2.7.x同时支持file和open,但是在3.5.x系列移除了file函数。 Python...
                99+
                2023-01-31
                之路 操作 文件
              软考高级职称资格查询
              编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
              • 官方手机版

              • 微信公众号

              • 商务合作