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

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

 

posted @ 2022-09-24 12:00  遥鱼  阅读(249)  评论(0编辑  收藏  举报