Linux
文章平均质量分 83
进击的小猿ㅤ
这个作者很懒,什么都没留下…
展开
-
进程间通信——管道
数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。管道是Unix中最古老的进程间通信的形式。我们把从一个进程连接到另一个进程的一个数据流称为一个“管道”原创 2023-11-20 19:42:50 · 77 阅读 · 0 评论 -
Linux下动态库和静态库
方法3:修改系统配置文件,系统存在一个动态库默认搜索的配置文件:/etc/ld.so.conf.d/,在该路径下创建一个文件后缀必须是.conf,将我们要使用的动态库路径写到创建的这个文件内,完成后执行 ldconfig,更新一下。当同一个目录下有同名的一个静态库和一个动态库,默认使用动态库,所以-static的意义就是,摒弃优先使用动态库的原则,直接使用静态库。倒环境变量:绝对路径后面不用再指明库的名字了,因为链接的时候,可执行程序已经知道了自己要使用哪一个库。方法1:将动态库拷贝到系统库路径下。原创 2023-11-16 22:46:28 · 80 阅读 · 0 评论 -
理解文件系统与inode
进程中讨论的都是被打开的文件,那在磁盘中有大量的没有被打开的文件,需要系统进行管理。原创 2023-11-15 20:37:59 · 64 阅读 · 0 评论 -
简易版的shell实现
【代码】简易版的shell实现。原创 2023-11-12 14:49:14 · 24 阅读 · 0 评论 -
Linux进程控制
理论上,子进程也要有自己的代码和数据,但一般而言,没有这个加载的过程(将磁盘中的代码和数据加载到内存),也就是说子进程没有自己的代码和数据,所以子进程只能“使用”父进程的代码和数据。main函数的返回值是进程退出码,表示进程是否正确返回,非0:标识运行结果不正确,非0值有无数个,不同的非0值就可以标识不同的错误原因,从而给程序在运行结束之后,结果不正确时,方便定位错误的原因细节。通常,父子代码共享,父子再不写入时,数据也是共享的,当任意一方试图写入,便以写时拷贝的方式各自一份副本。原创 2023-11-12 14:37:06 · 24 阅读 · 0 评论 -
进程地址空间
我们发现,输出出来的变量值和地址是一模一样的,很好理解,因为子进程按照父进程为模版,父子并没有对变量进行进行任何修改。怎么可能,同一个地址,同时读取的时候,出现了不同的值。这里的地址,绝对不是物理内存的地址,而是虚拟地址。所以几乎所有的语言,如果有“地址”的概念,这个地址一定不是物理地址,而是虚拟地址。所以之前说“程序的地址空间”是不准确的,准确的应该说成 进程地址空间 ,那该如何理解呢?看图上面的图就足矣说名问题,同一个变量,地址相同,其实是虚拟地址相同,内容不同其实是被映射到了不同的物理地址。原创 2023-11-08 14:24:39 · 37 阅读 · 0 评论 -
Linux进程基础
计算机管理硬件1. 描述起来,用struct结构体2. 组织起来,用链表或其他高效的数据结构。原创 2023-11-06 22:34:05 · 25 阅读 · 0 评论 -
冯诺依曼体系结构
输入设备、输出设备与CPU直接交互,因为这些外部设备的传输速度相较于CPU太慢了,根据木桶原理,严重影响了整个体系的效率,所以就不让输入输出设备与CPU直接交互了,而是在它们中间加入了存储器(内存),内存的效率要大于输入输出设备,但是有小于CPU,就能够在整个体系中起到一个缓冲的作用。所以当CPU需要获取某一行数据时,内存可以将该行数据之后的数据一同加载进来,而CPU处理数据和内存加载数据是可以同时进行的,这样下次CPU就可以直接从内存当中获取数据。,需要CPU从存储器取出指令和数据进行相应的计算。原创 2023-10-30 19:36:40 · 87 阅读 · 0 评论 -
Linux调试器-gdb使用
Linux gcc/g++出来的二进制程序,默认是release模式。程序的发布方式有两种,debug模式和release模式。原创 2023-10-30 18:34:09 · 24 阅读 · 0 评论 -
Linux项目自动化构建工具-make/Makefile
源文件一定是比可执行文件的时间要早,所以Makefile在编译时检测所有源文件和可执行文件的时间如果可执行程序是所有文件中最晚的,那这个可执行文件就是最新的。Makefile会根据可执行文件的最近修改时间来判断是否是最新的,从而判断要不要执行make。make是如何工作的,在默认的方式下,也就是我们只输入make命令。原创 2023-10-29 23:28:37 · 22 阅读 · 0 评论 -
Linux编辑器-gcc/g++的使用
gcc [选项] 要编译的文件 [选项] [目标文件]-static 此选项对生成的文件采用静态链接。原创 2023-10-29 22:33:16 · 20 阅读 · 0 评论 -
Linux编辑器—vim的使用
vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、windows。原创 2023-10-29 16:14:01 · 44 阅读 · 0 评论 -
Linux权限理解
目录的可执行权限是表示你可否在目录下执行命令。如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目录, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限,所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。原创 2023-10-29 15:38:02 · 36 阅读 · 1 评论 -
Linux基本指令
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容.-a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称。原创 2023-10-28 23:18:42 · 27 阅读 · 0 评论