Linux
文章平均质量分 91
@A云淡风轻
越努力越幸运
展开
-
Linux之进程替换
fork()之后,父子各自执行父进程代码的一部分,父子代码共享,数据写时拷贝各自一份,如果子进程想就执行一个全新的进程呢?进程的程序替换,来完成这个功能。程序替换:是通过特定的接口,加载磁盘上的一个权限的程序(代码和数据),加载到进程的地址空间中。用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exex函数以执行另外的一个程序。当进程调用一种exec函数时,该进程的用户空间代码和数据完全被新进程替换,从新程序的启动例程开始执行。原创 2023-03-29 21:52:50 · 430 阅读 · 0 评论 -
Linux之进程等待
另外,一旦一个进程变成僵尸状态,那就刀枪不入,“杀人不咋眼”的kill -9也无能为力,因为谁也没有办法杀死一个已经死去的进程。如果子进程已经返回,调用wait/waitpid后,wait/waitpid会立即返回,并且释放资源,获得子进程的退出信息。最后,父进程派给子进程的任务完成的如何,我们需要知道,如,子进程运行完成,结果对还是不对或者是否正常退出。之前讲过,子进程退出,父进程如果不管不顾,就可能造成僵尸进程的问题,进而造成内存泄漏。父进程通过进程等待的方式,回收子进程的资源,获取子进程退出信息。原创 2023-03-15 12:05:23 · 284 阅读 · 0 评论 -
Linux之进程终止
0表示success,非0表示允许的结果不正确,非零值有无数个,不同的非零值就可以标识不同的错误原因,给我们的程序在运行结束之后,结果不正确,方便定位错误的原因。***比如程序内出现数组越界啦,野指针啦等,程序直接崩溃,此时它们的退出码是无效的,没有执行return语句。我们发现这个缓冲区一定不在操作系统内部中,如果在_exit函数应该也能将数据刷新出来,但它不能,exit函数可以,所以,缓冲区是C标准库的,C标准库给我们维护的。main函数的返回值?return语句,就是终止进程的,return退出码。原创 2023-03-15 08:47:37 · 431 阅读 · 0 评论 -
Linux之进程创建
创建一个子进程,则系统里面多了一个进程,进程 = 内核数据结构+进程代码和数据,进程的代码和数据一般是从你的C/C++程序中来,也就是从磁盘而来。新进程叫做子进程,而原进程叫做父进程。创建子进程,给子进程分配对应的内核数据结构,必须子进程独有的,因为进程具有独立性!理论上,子进程也要有自己的代码和和数据,虽然父子进程给自调度,各自修改EIP,但是已经不重要了,因为子进程已经认为自己的EIP,就是fork之后的代码。从结果可以看出,fork之前,父进程独立执行,fork之后,父子进程两个执行流分别执行。原创 2023-03-14 09:12:49 · 509 阅读 · 0 评论 -
虚拟地址空间
我们将我们的代码和数据加载到内存中,加载本质是创建进程,那么是不是非得立马把所有的程序的代码和数据加载到内存中,并创建内核数据结构和建立相关映射关系?答案是否定的。在最极端的情况下,甚至只有内核结构(task_struct结构体、地址空间、页表,)被创建出来了,映射关系一个都没有。此时进程的状态就叫做新建状态。当真正调度这个进程的时候,才将进程的代码和数据加载到内存中,设置好映射关系。理论上,可以实现对进程的分批加载,那是不是可以分批换出呢?当然可以。原创 2023-03-01 20:05:50 · 719 阅读 · 1 评论 -
Linux之孤儿进程、进程优先级、环境变量
每个程序都会收到一张环境表,环境表是一个字符指针数组,每个指针指向一个以’\0’结尾的环境变量字符串。原创 2023-01-01 22:13:52 · 485 阅读 · 0 评论 -
Linux进程状态
创建成功一个子进程后,操作系统会在内存中生成一个描述它的属性的task_struct结构体,它的内部属性,要以父进程为模板,当在fork函数内部子进程已经创建成功后,fork函数后面的代码都是父子进程所共享的,比如这里的return id,每个进程得到它们自己的id返回值,继续下面的代码执行。这里的+号表示此进程是一个前台进程,当它在运行的时候,此时再在bash上输入命令如ls,pwd等会发现无效,此时此进程占用了整个bash。为了弄明白正在运行的进程是什么意思,我们需要知道进程的不同状态。原创 2022-12-29 11:57:14 · 342 阅读 · 1 评论 -
linux进程概念
课本概念:程序的一个执行实例,正在执行的一个程序的。内核观点:担当分配系统资源(CPU时间,内存)的实体。原创 2022-12-25 15:35:15 · 716 阅读 · 0 评论 -
Linux之vim编辑器
编辑/插入模式:你是不是遇到过用vim打开一个文件后,想直接开始写代码却写不了而产生一大堆问号?这说明此刻还不在编辑/插入模式。vim打开一个文件后,默认进去的是命令模式,输入i,进入到编辑/插入模式,此时可以开始编写你的代码了。底行模式:同样,在命令模式输入shift + :(即 :),跳转到底行模式。底行模式的常见命令:w:保存 q:退出 w!: 强制保存 q!: 强制退出 w!q!:强制保存并退出。原创 2022-10-02 14:30:25 · 866 阅读 · 0 评论 -
Linux权限总结
目录的可执行权限是表示你可否在目录下执行命令如果目录没有x权限,则无法对目录执行任何命令,甚至无法cd进入目录,即使目录仍然有 -r读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)而如果目录具有x权限,但没有 r 权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限。所在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。linux权限的总结就到这里了,我们下次再见!!!原创 2022-09-28 22:02:08 · 1069 阅读 · 0 评论 -
Linux常见指令介绍(2)之(echo、less、head、tail、date、cal、find、grep、xargs、zip/unzip、tar、bc、uname、history指令)
如何看待Linux下的各种指令?echo指令less指令(重要)head指令tail指令date指令时间戳cal指令find指令(非常重要)-namegrep指令xargs指令zip/unzip指令tar指令(重要)打包解包,不打开它,直接看内容bc指令uname-r指令重要的几个热键[Tab],[ctrl]-c,[ctrl]-dhistory指令。.........原创 2022-07-25 17:51:05 · 317 阅读 · 0 评论 -
Linux常见指令介绍(1)之(如何导入指令、ls、 pwd、 cd、 touch、 mkdir、 rmdir、 rm、 man、 cp、 mv、 cat、 more指令)
放弃不难,但坚持很酷,加油!(≧∇≦)ノ。原创 2022-07-19 11:17:53 · 1593 阅读 · 0 评论 -
Linux操作系统发展史
各位亲爱的小伙伴们,从今天起,让我们一起敲击Linux的大门,走入Linux的世界。今天我们要学习的内容是Linux的发展史( •̀ ω •́ )✧。Linux和Windows XX它们的定位是一样的,都是操作系统。企业内部,要给用户提供 “互联网服务”,企业也是需要通过计算机给我们提供服务器!硬件:服务器计算机 ,它当然也是需要操作系统的,Linux就是雄踞于服务端的操作系统!Linux是一款在企业端被高频使用的后台操作系统。看到这,我们来想几个问题?1.推动技术进步的基本模式为什么我们的科技是一原创 2022-07-14 16:56:47 · 850 阅读 · 0 评论