Linux操作系统
文章平均质量分 93
记录Linux学习
林先生-1
佛系……但致力于提高文章的文字水平。
展开
-
【Linux笔记】进程间通信之管道
大家在学习C++的时候可能听说过空间配置器,也可能听说过进程池,但可能并不真正理解这些到底是个什么东西。通俗的理解,我们可以将进程池理解成一个内存储备库。我们在学习C语言的时候用过malloc,学习C++的时候用过new,它们两个的作用都是申请一块内存空间供用户使用。而且我们也知道操作系统是内存的管理者,所以分配内存资源的工作只能有操作系统来做,而我们要访问操作系统只能通过系统调用。那么如果我们要频繁使用malloc或new来申请空间,难道是每次都要调用系统调用吗?原创 2024-02-14 01:33:57 · 1052 阅读 · 0 评论 -
【Linux笔记】动静态库的封装和加载
我们在学习C语言阶段其实就已经知道一个可执行程序的形成过程分为预处理、编译、汇编、链接这四个阶段,而且也知道我们程序中使用的各种库其实是在链接的阶段加载的。可我们那时候并不知道库是怎么被加载的,或者库是怎么形成的,所以今天我们就要好好的来聊一下,库的形成。原创 2024-02-10 00:21:05 · 1122 阅读 · 0 评论 -
【Linux笔记】文件系统与软硬链接
硬连接和软连接其实和他们的名字一样,只是起到了一个“链接”作用而已。先来看软连接:如果我们想要在系统中创建一个软连接,可以用ln -s指令:然后我们可以像使用原test.txt文件一样使用test.soft,对它们两个其中任意一个的任何操作都是一样的:我们可以看到,对于它们两个中任意一个写入,两个文件中的内容都是一致的,那这是不是说明他们两个是同一个文件呢?原创 2024-02-06 22:50:52 · 1129 阅读 · 0 评论 -
【Linux笔记】缓冲区的概念到标准库的模拟实现
缓冲区”我们简单的理解就是一个数据暂存库,当我们要将数据从一个地方传送到另一个地方的时,可以先将数据暂存到这个暂存库中,等时机到了再将数据传送到目标地点。这就好比我们生活中的快递站,当我们要把一个东西送给另一个人时,就可以先将数据放到快递站,快递站到了时间就会发货,以送往目的地。而我们的操作系统会为每一个被打开的文件创建一个缓冲区。原创 2024-02-04 21:38:05 · 1240 阅读 · 0 评论 -
【Linux笔记】文件描述符与重定向
我们在C语言阶段已经学过很多文件操作的函数,今天我们要来看看操作系统中对于文件是怎么操作的。原创 2024-01-30 23:40:18 · 1240 阅读 · 1 评论 -
【Linux笔记】自定义一个简单的shell
在Linux中,有一些命令是一定要父进程来执行的,不能由子进程来执行,这些命令就被称为“内建命令”。就拿上面所提到的“cd”命令来说,它的本质是程序的工作目录发生了改变,之后执行任何指令都是在这个工作目录下执行。那它就必定不能交给子进程来执行,因为子进程一执行就退了,所以就算子进程的工作目录改变了也没用。所以"cd"命令一定要是父进程执行。Linux中其实有很多的内建命令,今天我们实现的是一个简易的shell,所以我这里只实现三个:cd、export,echo。原创 2024-01-13 17:48:06 · 1018 阅读 · 0 评论 -
【Linux笔记】进程等待与程序替换
execl这个接口可以为我们执行进程替换的工作,所谓的进程替换其实并不是创建新进程,而是将进程的代码和数据替换:它的第一个参数表示你要替换的进程的路径+文件名,而后面的可变参数列表则表示你想要怎样执行这个进程,因为各种进程执行所对应的执行选项不同,所以这里需要用可变参数列表,需要注意的是在可变参数列表的最后,一定要传一个NULL,表示参数传递完毕。先拿我们最常用的“ls”这个指令来演示:这样我们就可以在我们自己写的C语言代码中调用我们系统的指令了。然后我们再来看一个现象:原创 2024-01-12 15:54:36 · 976 阅读 · 0 评论 -
【Linux笔记】Linux环境变量与地址空间
如上图,其实我们在运行我们自己所写的程序时候也可以传入一些参数,而系统会将我们呢传递的这些参数以空格为分隔,将它们转化成字符串放入argv数组中,然后我们就可以在程序中打印出这些字符串了,而第一个字符串是程序的名字,这是怎样都会存在的。我们知道,父子进程的代码是共享的,而数据是个自有一份的,并且观察以上的结果我们可以推断出变量的值不一样,说明进程中的变量绝对不是同一个变量。其本质目的就是为了操作系统能直接找到对应的软件或者指令,也可以理解成是在操作系统环境中的一个变量,所以操作系统能直接的找到它。原创 2023-11-09 19:39:20 · 285 阅读 · 0 评论 -
【Linux笔记】Linux进程概念与进程状态
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。进程是被加载到内存中的程序,或者运行起来的程序就叫做进程。原创 2023-11-02 17:00:26 · 748 阅读 · 1 评论 -
【Linux笔记】Linux基础权限
将权限掩码002转化成二进制为:000 000 010,按位取反后为:111 111 101,所以和普通文件的默认权限110 110 110 和目录文件的默认权限111 111 111 按位与后就得到了110 110 100和111 111 101,也就是664和775。新建一个文件的权限其实是默认权限减去该用户的权限掩码,也就是将权限掩码中有的权限减去。如上图举例:该文件的拥有者对该文件有读写和执行权限,所属组有读和执行权限,其他人有读和执行的权限(‘-’ 就表示该用户没有对应的权限)。原创 2023-10-19 09:19:04 · 179 阅读 · 0 评论