首页 > 系统相关 >Unix/Linux系统编程(文件编程与系统调用)

Unix/Linux系统编程(文件编程与系统调用)

时间:2022-09-24 12:11:51浏览次数:55  
标签:文件 调用 编程 系统 用户 Unix Linux 操作 链接

一.文件操作

  1.文件操作级别

    (1)硬件级别

    硬件级别的文件操作包括:

    fdisk:将硬盘、U盘或SDC盘分区。

    mkfs:格式化磁盘分区,为系统做好准备

    fsck:检查和维修系统

    碎片整理:压缩文件系统中的文件

    (2)操作系统内核中的文件系统函数:每个操作系统内核均可为基本文件操作提供支持

    (3)系统调用:用户模式程序使用系统调用来访问内核函数

    (4)I/O库函数

    (5)用户命令:用户可以使用Unix/Linux命令来执行文件操作而不是编写程序

    用户命令的示例如下:

      mkdir,rmdir,cd,pwd,ls,link,unlink,rm,cat,cp,mv,chmod,etc.

      每个用户命令实际上是一个可执行程序(cd除外),通常会调用库I/O函数,而库I/O函数再发出系统调用来调用相应的内核函数。

  2.文件I/O操作

    用户模式下的程序执行操作

    FILE *fp=fopen("file" , "r");or FILE *fp = fopen("file" "w");

    可以打开一个读/写文件流

二.使用系统调用进行文件操作

  1.系统调用

  在操作系统中,进程以两种不同的模式运行,即内核模式用户模式,简称Kmode(系统态)Umode(用户态)。在Umode中,进程的权限非常有限,它不能执行任何需要特殊权限的操作,特殊权限的操作必须在Kmode下执行。系统调用(简称syscall)是一种允许进程进入Kmode以执行Umode不允许操作的机制。

  平常我们的进程几乎都是用户态,读取用户数据,当涉及到系统级别资源的操作(例如文件管理、进程控制、内存管理等)的时候,就要用到系统调用了。

  2.使用系统调用进行文件操作

  系统调用必须由程序发出。它们的用法就像普通函数调用一样。每个系统调用都是一个库函数,它汇集系统调用参数,并最终向操作系统内核发出一个系统调用。

  3.常用的系统调用(参考链接:https://blog.csdn.net/qq_43412060/article/details/105460239)

 

  4.链接文件(参考链接:https://blog.csdn.net/lelecastle/article/details/119843000)

    硬链接(硬链接文件)

      命令:ln oldpath newpath

      硬链接仅适用于非目录文件

 

    软链接(符号链接文件)

      命令:ln -s oldpath newpath(创建从newpath到oldpath的软链接或符号链接)

      与硬链接不同,软链接适用于任何文件,包括目录,通常在下面这两种情况下特别有用:

      (1)通过一个较短的名称来访问一个经常使用的较长路径名称

        例如:x——>aVeryLongPathnameFile

      (2)将标准动态库名称链接到实际版本的动态库

        例如:libc.so.6 ——> libc.2.7.so

      当实际动态库更改为不同版本时,库安装程序只需更改(软)链接以指向新安装的库

 

标签:文件,调用,编程,系统,用户,Unix,Linux,操作,链接
From: https://www.cnblogs.com/yao-yuer/p/16725330.html

相关文章

  • linux软件包管理 实验报告
    实验任务对软件包进行一些基础操作实验环境一台centos7 实验步骤1.下载一个软件包进行实验将软件包拖进去  查看是否存在  因为只是下载了软件包,并没......
  • Linux-top命令详解
    top命令介绍相信每个运维人员都遇到过的事情就是服务器的负载突然飙升,碰到这种情况,大家第一反应一定是登到服务器上,先敲一个top命令看看loadaverage吧。在Linux操作系统......
  • linux 安装redis及启动
    第一步下载redis之后搞个虚拟机安装可以参考https://www.runoob.com/redis/redis-install.html  菜鸟之后会遇到报错把gcc更新一下就没问题了 ......
  • linux 常用命令
    查看文件数量:ls|wc-l切换root用户:sudosu-查看文件大小:ls-alh查看该目录的大小:du-sh查看该目录下各个文件的大小:查看目录下各个文件权限:ll*或者ll*/*du-h--m......
  • linux 启动mysql失败 InnoDB: Table flags are 0 in the data dictionary but the fla
    linux启动mysql失败,报错日志文件里的报错信息InnoDB:Tableflagsare0inthedatadictionarybuttheflagsinfile./ibdata1are0x4800!执行 sudosystemctl......
  • 【文档资料】Linux、Vi/Vim常用命令
    一、Linux1、系统信息【左1】查看磁盘空间使用情况:df+参数查看当前指定文件或目录的大小:du查看不同硬件信息:cat/proc/xxx查看系统和空闲内存:free+参数SSH退出后程序......
  • 李慧芹-Linux C视频教程 部分
    MakefileOBJS=main.otool1.otool2.oCC=gccCFLAGS+=-c-Wall-gmytool:$(OBJS)$(CC)$^-o$@%.o:%.c$(CC)$^$(CFLAGS)-o$@clean:$(RM)*.omytool......
  • Vmware部署Linux无人值守安装Centos7系统
    Linux-无人值守安装服务#需求分析-使用光盘镜像来安装Linux系统的方式;坦白讲,该方法适用于只安装少量Linux系统的情况,如果生产环境中有数百台服务器都需安......
  • 【Linux】有名管道实现Linux进程间通信
    进程间通信之有名管道​进程间通信有多种方式实现,本文主要讲解有名管道的通信方式。一,有名管道简介匿名管道由于没有名字,只能用于具有亲缘关系的进程间通信。为了克服......
  • 编程之路怎么走
    编程之路怎么走学习多谢代码,多记笔记,多写文章多练交流,多练思维,多练技能多分享知识,多提问,多思考最重要——坚持人生状态坚持学到最后无论何时,都要保持自信要是......