![](https://img-blog.csdnimg.cn/20190918140037908.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
linux文件系统编程
文章平均质量分 50
linux文件操作,Makefile等
打酱油的;
这个作者很懒,什么都没留下…
展开
-
文件描述符复制(重点)
1.概述dup() 和 dup2() 是两个非常有用的系统调用,都是用来复制一个文件的描述符,使新的文件描述符也标识旧的文件描述符所标识的文件。这个过程类似于现实生活中的配钥匙,钥匙相当于文件描述符,锁相当于文件,本来一个钥匙开一把锁,相当于,一个文件描述符对应一个文件,现在,我们去配钥匙,通过旧的钥匙复制了一把新的钥匙,这样的话,旧的钥匙和新的钥匙都能开启这把锁。对比于 dup(), dup2() 也一样,通过原来的文件描述符复制出一个新的文件描述符,这样的话,原来的文件描述符和新的文件描述符原创 2022-04-16 22:13:11 · 237 阅读 · 0 评论 -
阻塞与非阻塞概念
阻塞和非阻塞的概念读常规文件是不会阻塞的,不管读多少字节,read一定会在有限的时间内返回。从终端设备或网络读则不一定,如果从终端输入的数据没有换行符,调用read读终端设备就会阻塞,如果网络上没有接收到数据包,调用read从网络读就会阻塞,至于会阻塞多长时间也是不确定的,如果一直没有数据到达就一直阻塞在那里。同样,写常规文件是不会阻塞的,而向终端设备或网络写则不一定。【注意】阻塞与非阻塞是对于文件而言的,而不是指read、write等的属性。以非阻塞方式打开文件程序示例:#include &l原创 2022-02-28 16:39:45 · 568 阅读 · 0 评论 -
stat函数(重点)
#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>int stat(const char *path, struct stat *buf);int lstat(const char *pathname, struct stat *buf);功能: 获取文件状态信息 stat和lstat的区别: 当文件是一个符号链接...原创 2022-04-09 16:01:23 · 1516 阅读 · 0 评论 -
IO函数 -权限相关函数
1.access函数#include <unistd.h>int access(const char *pathname, int mode);功能:测试指定文件是否具有某种属性,文件所属者参数: pathname:文件名 mode:文件权限,4种权限 R_OK: 是否有读权限 W_OK: 是否有写权限 X_OK: 是否有执行权限 F_OK: 测试文件是否存在返回值: 0: .原创 2022-04-15 23:47:18 · 377 阅读 · 0 评论 -
常用文件IO函数(系统函数)-lseek
#include <sys/types.h>#include <unistd.h>off_t lseek(int fd, off_t offset, int whence);功能: 改变文件的偏移量参数: fd:文件描述符 offset:根据whence来移动的位移数(偏移量),可以是正数,也可以负数,如果正数,则相对于whence往右移动,如果是负数,则相对于whence往左移动。如果向前移动的字节数超过了文件开..原创 2022-04-03 16:10:37 · 599 阅读 · 0 评论 -
Linux网络配置
net:Linux通过虚拟网卡接通交换机和Linux通信,虚拟网卡和Linux同一网段。桥接:路由,笔记本,Linux三者中间接了交换机 ,使得Linux和主机网络在同一网段。自动:接一个路由器,自动获取DHCP。原创 2022-08-07 23:40:28 · 178 阅读 · 0 评论 -
常用文件IO函数(系统函数)-write/read
write函数#include <unistd.h>ssize_t write(int fd, const void *buf, size_t count);功能:把指定数目的数据写到文件(fd)参数:fd : 文件描述符buf : 数据首地址count : 写入数据的长度(字节)返回值:成功:实际写入数据的字节个数失败: - 1read函数#include <unistd.h>ssize_t read(int fd, void *buf, size原创 2022-02-24 22:02:32 · 315 阅读 · 0 评论 -
常用文件IO函数 -open/close
1.open函数#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int open(const char *pathname, int flags);int open(const char *pathname, int flags, mode_t mode);功能:打开文件,如果文件不存在则可以选择创建。参数:pathname:文件的路径及文件名flags:打开文件的行为标志,原创 2022-02-22 22:15:44 · 1002 阅读 · 0 评论 -
文件描述符
文件描述符概念在 Linux 的世界里,一切设备皆文件。我们可以系统调用中 I/O 的函数(I:input,输入;O:output,输出),对文件进行相应的操作( open()、close()、write() 、read() 等)。打开现存文件或新建文件时,系统(内核)会返回一个文件描述符,文件描述符用来指定已打开的文件。这个文件描述符相当于这个已打开文件的标号,文件描述符是非负整数,是文件的标识,操作这个文件描述符相当于操作这个描述符所指定的文件。程序运行起来后(每个进程)都有一张文件描述符的表,标原创 2022-02-22 20:55:16 · 1355 阅读 · 2 评论 -
系统调用简介和实现
1.系统调用的概念**系统调用,顾名思义,说的是操作系统提供给用户程序调用的一组“特殊”接口。**用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务,比如用户可以通过文件系统相关的调用请求系统打开文件、关闭文件或读写文件,可以通过时钟相关的系统调用获得系统时间或设置定时器等。从逻辑上来说,系统调用可被看成是一个内核与用户空间程序交互的接口——它好比一个中间人,把用户进程的请求传达给内核,待内核把请求处理完毕后再将处理结果送回给用户空间。系统服务之所以需要通过系统调用来提供给用户空间的根本原原创 2022-02-18 15:14:28 · 2034 阅读 · 0 评论 -
虚拟地址空间和物理地址空间
1.概念每个进程都会分配虚拟地址空间,在32位机器上,该地址空间为4G 。平时以虚拟形式存储,当应用程序使用虚拟地址访问内存时/a.out执行,mmu将虚拟地址转换为物理地址执行(正常文件存储在磁盘中)段错误:内存访问非法,内核空间受保护堆空间存储后一定要释放在进程里平时所说的指针变量,保存的就是虚拟地址。当应用程序使用虚拟地址访问内存时,处理器(CPU)会将其转化成物理地址(MMU)。MMU:将虚拟的地址转化为物理地址。这样做的好处在于:进程隔离,更好的保护系统安全运行屏蔽物理差异带来原创 2022-02-22 00:42:55 · 7465 阅读 · 0 评论 -
错误码和错误处理函数
1. 错误处理函数errno 是记录系统的最后一次错误代码。代码是一个int型的值,在errno.h中定义。查看错误代码errno是调试程序的一个重要方法。当Linux C api函数发生异常时,一般会将errno全局变量赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因。测试程序:#include <stdio.h> //fopen#include <errno.h> //errno#include <string.h> //strer原创 2022-02-19 23:34:12 · 978 阅读 · 0 评论 -
C库中IO函数工作流程
库函数访问文件的时候根据需要,设置不同类型的缓冲区,从而减少了直接调用 IO 系统调用的次数,提高了访问效率。这个过程类似于快递员给某个区域(内核空间)送快递一样,快递员有两种方式送:1)来一件快递就马上送到目的地,来一件送一件,这样导致来回走比较频繁(系统调用)2)等快递攒着差不多后(缓冲区),才一次性送到目的地(库函数调用)...原创 2022-02-18 17:22:57 · 269 阅读 · 0 评论 -
软件安装与下载
方式1.在线安装如果是在ubuntu平台,软件的安装可以通过互联网在线安装,更加方便快捷:命令 含义 sudo apt-get update 获得最新的软件包的列表 sudo apt-get install xxx 从源中安装xxx软件 sudo apt-get remove xxx 删除xxx软件 sudo apt-get clean 清理安装包 2 软件包安装在Ubuntu下安装文件为deb格式软件安装sudo dpkg.原创 2022-03-06 20:49:37 · 110 阅读 · 0 评论 -
重定向使用(输出内容到文件)
重定向标准输入 代码 0 默认设备为键盘标准输出 代码 1 默认设备为屏幕错误输出 代码 2 默认设备为屏幕ls /etc/passwd > output.txt 标准正确输出重定向到output.txt ls /etc/shadow >> output.txt 标准正确输出追加重定向到output.txt ls dddddd 2> error.txt 标准错误输出重定向到error.txt ls ddddd 2>> error.tx..原创 2022-03-06 22:24:00 · 1646 阅读 · 0 评论 -
管道的概念
管道(|):一个命令的输出可以通过管道做为另一个命令的输入。管道我们可以理解现实生活中的管子,管子的一头塞东西进去,另一头取出来,这里“ | ”的左右分为两端,左端塞东西(写),右端取东西(读)。cat /etc/passwd | less...原创 2022-03-08 11:08:58 · 281 阅读 · 0 评论 -
其它Linux命令
1.tree概念:tree 以树状形式查看指定目录内容,使用该命令需要安装软件 tree使用格式:sudo apt install tree常用选项:-L n 查看n层目录 2.ln(掌握)概念:ln命令主要用于创建链接文件。Linux链接文件类似于Windows下的快捷方式。链接文件分为软链接和硬链接:软链接:软链接不占用磁盘空间,源文件删除则软链接失效。硬链接:硬链接只能链接普通文件,不能链接目录。使用格式:ln 源文件 链接文件l...原创 2022-03-08 10:19:51 · 232 阅读 · 0 评论 -
权限相关命令(chown)
chown(了解)l chown用于修改文件所有者l 使用方法:chown 文件所有名:文件所有组名 文件或目录名说明:只改一个就写一个,如:root原创 2022-03-06 18:27:52 · 84 阅读 · 0 评论 -
权限相关命令 (chmod)
1.chmodchmod 修改文件权限有两种使用格式:字母法与数字法。字母法:chmod u/g/o/a +/-/= rwx 文件[ u/g/o/a ] 含义 u user 表示该文件的所有者 g group 表示与该文件的所有者属于同一组( group )者,即用户组 o other 表示其他以外的人 a all 表示这三者皆是 [ +-= ] 含义 + 增加权限 - 撤销权限 = 设定权限 rwx .原创 2022-03-05 18:23:32 · 7283 阅读 · 2 评论 -
文件权限管理
1 文件权限概念文件权限就是文件的访问控制权限,即哪些用户和组群可以访问文件以及可以执行什么样的操作。Unix/Linux系统是一个典型的多用户系统,不同的用户处于不同的地位,对文件和目录有不同的访问权限。为了保护系统的安全性,Unix/Linux系统除了对用户权限作了严格的界定外,还在用户身份认证、访问控制、传输安全、文件读写权限等方面作了周密的控制。在 Unix/Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。2 访问用户分类通过设定权限可以原创 2022-03-03 12:05:03 · 2222 阅读 · 0 评论 -
系统权限说明
Linux 系统中采用三位十进制数表示权限,如0755, 0644.ABCDA- 0, 表示十进制B-用户C-组用户D-其他用户— -> 0 (no excute , no write ,no read)–x -> 1 excute, (no write, no read)-w- -> 2 write-wx -> 3 write, excuter-- -> 4 readr-x -> 5 read, excuter原创 2022-02-28 16:42:23 · 205 阅读 · 0 评论 -
Linux进阶命令(版本2推荐)
1.tar计算机中的数据经常需要备份,tar是Unix/Linux中最常用的备份工具,此命令可以把一系列文件归档到一个大文件中,也可以把档案文件解开以恢复数据。tar使用格式:tar [选项] 打包文件名 文件tar命令很特殊,其选项前面可以使用“-”,也可以不使用。常用参数:参数 含义-c 生成档案文件,创建打包文件-v 列出归档解档的详细过程,显示进度-f 指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后-t 列出档案中...原创 2022-03-08 11:53:02 · 154 阅读 · 0 评论 -
linux进阶命令(版本1)
find原创 2021-10-12 18:32:28 · 80 阅读 · 0 评论 -
linux入门命令(版本2推荐)
1.cd在使用Unix/Linux的时候,经常需要更换工作目录。cd命令可以帮助用户切换工作目录。Linux所有的目录和文件名大小写敏感。cd后面可跟绝对路径,也可以跟相对路径。如果省略目录,则默认切换到当前用户的主目录。命令 含义cd 切换到当前用户的主目录(/home/用户目录),用户登陆的时候,默认的目录就是用户的主目录。cd ~ 切换到当前用户的主目录(/home/用户目录)cd . 切换到当前目录cd … 切换到上级目录cd - 可进入上一个进入的目录2.mkdir用法:mk.原创 2021-10-02 15:42:34 · 118 阅读 · 0 评论 -
linux入门命令(版本1)
1. pwd和cd说明:文件名写法没写路径默认当前路径没写路径加后续路径为延伸路径从跟目录开始的绝对路径原创 2021-10-04 16:32:30 · 62 阅读 · 0 评论 -
交叉编译hello
1.文件main参数argc表示数量argv是数组表示内容说明:双引号代表一个参数原创 2021-10-22 23:13:55 · 93 阅读 · 0 评论 -
shell命令功能说明
在shell中输入字符串并回车的过程:shell根据第1个字符串去环境变量PATH所指定的目录中找到同名的应用程序然后执行它我们可以设置PATH环境变量添加我们的目录:export PATH=$PATH:/my/dircommand not found的原因:PATH所确定的目录中无此程序它不是可执行的程序...原创 2021-10-02 20:42:00 · 81 阅读 · 0 评论 -
vi编辑器使用(重要)
1. vi编辑器使用2.三种基本模式原创 2021-10-07 16:09:22 · 74 阅读 · 0 评论 -
命令类型及其比较
1.类型:内建命令和外部命令什么是内建命令shel内建命令是指bash(或其它版本)工具中集成的命令。一般都会有一个与之同名的系统命令,比如bash中的echo命令与/bin/echo是两个不同的命令,尽管他们行为大体相仿。当在bash中键入一个命令时系统会先看他是否是一个内建命令,如果不是才会查看是否是系统命令或第三方工具。所以在bash中键入echo命令实际上执行bash工具集中的bash命令也就是内建命令,而不是/bin/echo这个系统命令。外部命令外部命令是安装外部软件所带的命令2.内建原创 2022-02-28 17:17:34 · 693 阅读 · 0 评论 -
Linux文件类型
1.文件类型Unix/Linux对数据文件(.mp3、.bmp),程序文件(.c、.h、*.o),设备文件(LCD、触摸屏、鼠标),网络文件( socket ) 等的管理都抽象为文件,使用统一的方式方法管理。 Linux下一切皆文件。在Unix/Linux操作系统中也必须区分文件类型,通过文件类型可以判断文件属于可执行文件、文本文件还是数据文件。在Unix/Linux系统中文件可以没有扩展名。2.文件类型分类通常,Unix/Linux系统中常用的文件类型有7种:普通文件、目录文件、设备文件、管道文原创 2022-02-17 17:26:30 · 5254 阅读 · 0 评论 -
Linux文件解析器
1 概述很多人可能在电视或电影中看到过类似的场景,黑客面对一个黑色的屏幕,上面飘着密密麻麻的字符,梆梆一顿敲,就完成了窃取资料的任务。Linux 刚出世时没有什么图形界面,所有的操作全靠命令完成,就如同电视里的黑客那样,充满了神秘与晦涩。近几年来,尽管 Linux 发展得非常迅速,图形界面越来越友好,但是在真正的开发过程中,Linux 命令行的应用还是占有非常重要的席位,而且许多Linux功能在命令行界面要比图形化界面下运行的快。可以说不会命令行,就不算会 Linux。Linux 提供了大量的命令,原创 2022-02-17 22:27:00 · 592 阅读 · 0 评论 -
linux命令提示符与命令格式
命令提示符命令格式原创 2021-10-03 16:48:43 · 86 阅读 · 0 评论 -
相对路径和绝对路径概念
绝对路径和相对路径Unix/Linux路径由到达定位文件的目录组成。在Unix/Linux系统中组成路径的目录分割符为斜杠“/”,而DOS则用反斜杠“\”来分割各个目录。路径分为绝对路径和相对路径:1)绝对路径绝对路径是从目录树的树根“/”目录开始往下直至到达文件所经过的所有节点目录。下级目录接在上级目录后面用“/”隔开。注意:绝对路径都是从“/”开始的,所以第一个字符一定是“/”。/home/testtest/var/ftp/pub2)相对路径相对路径是指目标目录相对于当前目录的位置原创 2022-03-02 00:00:51 · 3073 阅读 · 0 评论 -
linux文件目录
/:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。/bin: /usr/bin: 可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。/boot:放置linux系统启动时用到的一些文件,如Linux的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub。/dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访.原创 2021-09-30 00:56:16 · 79 阅读 · 0 评论 -
linux目录结构
原创 2021-10-04 16:48:38 · 56 阅读 · 0 评论 -
GDB调试器
1 GDB简介GNU工具集中的调试器是GDB(GNU Debugger),该程序是一个交互式工具,工作在字符模式。除gdb外,linux下比较有名的调试器还有xxgdb, ddd, kgdb, ups。GDB主要帮忙你完成下面四个方面的功能:启动程序,可以按照你的自定义的要求随心所欲的运行程序。 可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式) 当程序被停住时,可以检查此时你的程序中所发生的事。 动态的改变你程序的执行环境。2 生成调试信息一般来说G原创 2022-03-27 11:06:57 · 726 阅读 · 0 评论 -
动态库制作和使用
共享库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入。不同的应用程序如果调用相同的库,那么在内存里只需要有一份该共享库的实例,规避了空间浪费问题。动态库在程序运行是才被载入,也解决了静态库对程序的更新、部署和发布页会带来麻烦。用户只需要更新动态库即可,增量更新。按照习惯,一般以“.so”做为文件后缀名。共享库的命名一般分为三个部分:前缀:lib 库名称:自己定义即可 后缀:.so所以最终的动态库的名字应该为:libxxx.so1)动态库制作步骤一:生成.原创 2022-03-24 19:21:49 · 2075 阅读 · 0 评论 -
静态库制作和使用
静态库可以认为是一些目标代码的集合,是在可执行程序运行前就已经加入到执行码中,成为执行程序的一部分。按照习惯,一般以“.a”做为文件后缀名。静态库的命名一般分为三个部分:前缀:lib 库名称:自己定义即可 后缀:.a所以最终的静态库的名字应该为:libxxx.a1) 静态库制作步骤1:将c源文件生成对应的.o文件deng@itcast:~/test/3static_lib$ gcc -c add.c -o add.odeng@itcast:~/test/3st...原创 2022-03-21 19:46:11 · 4479 阅读 · 0 评论 -
链接器链接类型(静态/动态)
静态连接和动态连接链接分为两种:静态链接、动态链接。1)静态链接静态链接:由链接器在链接时将库的内容加入到可执行程序中。优点:对运行环境的依赖性较小,具有较好的兼容性缺点:生成的程序比较大,需要更多的系统资源,在装入内存时会消耗更多的时间 库函数有了更新,必须重新编译应用程序2)动态链接动态链接:连接器在链接时仅仅建立与所需库函数的之间的链接关系,在程序运行时才将所需资源调入可执行程序。优点:在需要的时候才会调入对应的资源函数 简化程序的升级;有着较小的程序体积原创 2022-03-20 23:45:27 · 723 阅读 · 0 评论 -
开发工具 -- gcc编译器使用
1.gcc常用选项gcc常用选项:-v:查看gcc编译器的版本,显示gcc执行时的详细过程-o Place the output into 指定输出文件名为file,这个名称不能跟源文件名同名-E Preprocess only; do not compile, assemble or link只预处理,不会编译、汇编、链接-S Compile only; do not as原创 2022-02-08 11:48:00 · 3215 阅读 · 0 评论