
Linux从入门到入土
文章平均质量分 91
Linux的学习之路
无聊看看天T^T
事以密成,语以泄败
展开
-
线程的pthread_create、pthread_join、pthread_exit、pthread_detach函数
存储新线程的标识符(ID)线程属性(如栈大小等)一般为nullptr使用默认属性指向线程要执行的函数(返回值和参数类型都要是void*)传递给线程调用的函数的参数(可以是字符串、整型、类对象等)线程的所有相关函数执行成功时均返回0,失败时均返回错误码多线程编程中,虽然每个线程有独立的栈空间,但主线程传递给子线程的类对象或结构体对象仍应通过new在堆上动态分配:虽然栈空间独立,但整个进程的虚拟地址空间是共享的,因此线程间可通过指针访问任意内存地址(包括其他线程的栈)主线程如果以。原创 2025-03-23 23:38:39 · 916 阅读 · 0 评论 -
Linux中线程的基本概念(重要)
在Linux操作系统中线程是进程内部的一个执行分支,是CPU调度的基本单位,而进程是分配系统资源的基本单位(地址空间)(完整的执行流需要PCB、进程地址空间、页表、代码和数据,这些内容线程都有只不过可能是借用了进程的部分内容)(Windows中的线程设计是符合理论的)(新的数据结构TCB)(上图所示)原创 2024-11-11 21:37:37 · 563 阅读 · 0 评论 -
Linux中的网络指令:ping、netstat、watch、pidof、xargs
用于将标准输入或文件中的内容转换为命令的参数。它非常适合用于监控系统状态、查看某个命令的运行情况等。获取正在运行的某个程序的进程PID,它会根据给定的程序名查找该程序对应的所有进程,并返回其 PID。显示使用连接的进程及其 PID,用于查找某个端口号被哪个进程占用。列出所有正在监听的服务器套接字以及已建立连接的客户端套接字。每 2 秒钟刷新一次指定命令的输出。指定每次请求之间的间隔,默认是1秒。查看TCP协议的也是同样的道理。转换为命令行参数来执行指定的命令。指定发送的回显请求的数量。原创 2024-10-07 21:48:34 · 843 阅读 · 0 评论 -
Linux环境下的日志文件的实现(一般)
日志等级] [PID] [FileName] [FileNum] [Time] 日志内容。用于记录软件运行时的信息,可以向显示器和文件中进行打印,且有特定的格式。(常规输出,比如打印某文件成功)(很严重但程序仍然勉强能运行)(有问题但不影响程序执行)(致命的,程序无法运行)日志所存放的文件名称。原创 2024-10-06 18:32:44 · 1272 阅读 · 0 评论 -
网络基础:TCP/IP五层模型、数据在局域网传输和跨网络传输的基本流程、IP地址与MAC地址的简单解析(重要)
独立模式、网络互联、局域网、广域网一台电脑主机内的CPU、显卡等设备都是由一条总线连接起来的,所以可以将一台计算机的内部也看作是一个小型网络结构。原创 2024-10-04 23:01:55 · 1592 阅读 · 0 评论 -
Linux的信号保存 && 信号处理(了解)
1、实际执行信号的处理动作(默认、忽略、自定义捕捉)称为信号递达2、信号从产生到递达之间的状态叫做信号未决(pending)3、进程可以选择阻塞(block)某个信号4、阻塞一个信号,那么对应的信号一旦产生,永不递达,一直未,直到主动解除阻塞5、信号的阻塞和未决无关(未决只是要做未做,阻塞是永远不做除非唤醒)6、两张位图 + 一张函数指针数组 = 进程识别信号原创 2024-05-17 11:49:40 · 312 阅读 · 0 评论 -
Linux的信号量 && PV操作 && 加解锁 && 信号(重要)
为了让信号量可以向共享内存一样让不同的进程看到,从而申请与释放,因此信号量也必须是一个共享资源,而作为一个共享资源,信号量除了要保证临界资源的安全外还要保护自己的安全,3、进程对于资源的访问,本质上是通过代码访问的,但并不是所有的代码都会去访问共享资源,即进程中的代码 = 会访问共享资源的代码 + 不会访问共享资源的代码。(A进程申请一个全局生命周期的信号量,那么其它与A进程没有“血缘”关系的进程就不可能看到这个信号量,更别提当其它进程访问临界资源时该信号量能干什么事了)用于释放信号量,将信号量的值加1。原创 2024-05-16 21:53:11 · 771 阅读 · 0 评论 -
Linux的共享内存(重要)
使用管道是因为共享内存空间不会提供对自己本身的保护机制,这就会导致数据不一致问题(客户端还没写完,服务端就疯狂的读取),使用管道 + read函数的方式,当客户端向共享内存空间中写入数据后会向管道中发送一份可以读取提醒,否则服务端就会一直因read读取不到管道中的内容而阻塞,当服务端读取到客户端向管道中写入的提醒时就会开始读取(当然读取什么并不重要我们要的是能让他阻塞等待客户端写完),服务端不再阻塞后就会打印此时共享内存空间中的内容(相当于读取了)原创 2024-05-14 18:24:48 · 876 阅读 · 0 评论 -
Linux的进程间通信 && 命名和匿名管道 && 进程池(重要)
指不同的进程之间交换数据和信息的机制。由于OS中每个进程都有自己独立的地址空间,无法直接访问其他进程的内存,因此需要通过操作系统提供的 IPC(进程间通信)机制来实现不同进程间的数据传递和信息共享要通信的两个或多个进程可以看到同一份OS中的资源fork函数创建出的子进程继承父进程不属于进程间通信。原创 2024-05-10 16:07:06 · 850 阅读 · 0 评论 -
Linux的基础IO:软硬连接 && 动态库 && 静态库(了解)
开发者将自己的操作手册和方法实现全部放入一个目录中,并由室友”模拟“下载该目录:如果室友想不gcc其它.o文件直接gcc自己写的文件,可以直接将这些文件放入系统的文件中,这样直接gcc main.c就可以生成可执行程序了,存入之后就可以将安装包mylib删除了:此时室友main.c所包含的头文件可以从""变为了:#include :表示引用标准库头文件,编译器会从系统配置的库环境中去寻找。原创 2024-05-08 14:49:46 · 1163 阅读 · 0 评论 -
Linux的基础IO:文件系统(一般)
对文件的所有操作(open等方法对文件进行操作时可能仅有"文件名"没有路径)一定涉及路径(为了逆向解析),因为只有通过文件所在路径才能知道该文件所在分区(每个进程的cwd中都会记载文件当前所在的路径,该路径 + 文件名就可以拼成一个完整的路径,然后由OS进行逆向解析,解析到该路径的前缀就可以确定文件所属分区,然后一层层的拿到文件与inode number的映射关系,直到进入文件所在分区)最后在该分区对文件进行操作,没有路径确定文件的具体位置,那么对文件的各种操作就是无法落地的一纸空文(即找到路径->确定分区原创 2024-05-04 21:49:10 · 914 阅读 · 2 评论 -
Linux的基础IO:文件描述符 && 重定向本质(重要)
在Linux中一切皆文件,打开文件的本质是进程打开了文件,文件没有被打开时一直存放在磁盘中(进程执行时才会打开文件,文件才会从磁盘中拿出),而OS中存在很多进程,即系统中一定存在大量被进程打开的文件,对此OS会采取“先描述再组织”的原则,每个被打开的文件在OS内部都有一个类似PCB的描述文件属性的结构体。文件 = 属性 + 内容文件不存在,则在当前路径下新建指定文件并写入文件存在,打开文件时会将该文件清空并写入以a方式打开文件:文件不存在,则在当前路径下新建指定文件并写入文件存在,追加写入。原创 2024-05-01 19:44:48 · 1082 阅读 · 0 评论 -
Linux进程概念(七):进程替换 && 自主shell的编写(重要)
fork创建子进程后,执行的是和父进程相同的代码,但有时可能需要子进程执行不同的代码分支,故子进程往往要调用exec函数来执行另一个程序新程序的代码和数据替换(覆盖)原进程的代码和数据,对原进程的PCB会有稍许修改在一个进程替换后不会创建新进程。原创 2024-04-29 21:44:26 · 656 阅读 · 0 评论 -
Linux进程概念(六):进程控制(重要)
代码运行完后是否正确可以通过进程的退出码决定,退出码可默认可自定补充:代码执行时,出现异常导致提前退出的根本原因是因为该进程收到了OS发给它的信号kill - l 查看信号找到确定退出原因1、进程终止一共有三种情况:代码跑完,结果正确代码跑完,结果不正确代码执行时,出现异常导致提前退出2、衡量一个进程退出情况可以依据退出码和退出信号1、任何进程,在退出时,一般必须要被父进程进行等待(退出信息要交给父进程)如果父进程不管Z状态的子进程,直接退出,则造成内存泄漏(子进程的PCB)原创 2024-04-27 20:47:43 · 611 阅读 · 0 评论 -
Linux进程概念(五):地址空间 && 写时拷贝(重要)
子进程在修改g_val的值后,父进程的g_val不变,子进程的g_val发生改变结论:0x601054是虚拟地址而不是物理地址,否则子进程修改g_val会导致父进程的g_val也改变。原创 2024-04-25 11:54:10 · 527 阅读 · 0 评论 -
Linux进程概念(四):进程优先级 && 环境变量(重要)
指定进程获取某种资源的先后顺序进程访问的资源(CPU等)是有限的,而会有多个进程试图访问同一资源ps -al进程的优先级,值越小优先级越高也叫nice值,是一个整型的进程优先级的修正数据,nice的取值范围是[-20,19](40个)Linux中,每次调整优先级都是基于默认PRI的,且不建议频繁调整优先级。原创 2024-04-22 23:38:39 · 747 阅读 · 0 评论 -
Linux的权限(二)(一般)
Linux中的文件类型、文件操作权限、如何修改文件权限、文件权限值的两种不同表示方式、权限有无带来的影响、如何修改文件角色、文件掩码umask,以及共享文件夹的创建原创 2023-12-16 20:06:17 · 1148 阅读 · 0 评论 -
Linux的基本指令 ( 一 )(一般)
介绍了ls指令、cd指令、which指令、tree指令、pwd指令等指令的内容和使用方式,同时也做了必要内容的补充,比如绝对路径与相对路径的知识......原创 2023-11-24 14:46:32 · 1062 阅读 · 0 评论 -
Linux的基本指令(四)(一般)
本篇主要讲述了对于时间指令date、时间戳的使用、如何挑选出我们想要的信息的grep指令、在目录中找到我们想要找到的某种类型的文件的find指令以及压缩和解压缩的zip与unzip指令......原创 2023-11-26 23:33:47 · 1558 阅读 · 0 评论 -
Linux的基本指令(五)(重要)
主要讲解了,与文件的打包与压缩相关的tar指令、同时基于tar指令延伸出了实现压缩文件在Linux与Windows之间的互传、压缩文件在Linux与Linux之间的互传、同时还讲解了开关机指令以及一些要的拓展知识,最后讲解了shell命令及其运行原理......原创 2023-12-02 15:47:34 · 1074 阅读 · 0 评论 -
Linux的权限(一)(一般)
初步认识Linux中的权限相关内容......原创 2023-12-02 19:35:19 · 1010 阅读 · 0 评论 -
Linux的权限(三)(一般)
一个文件是否可以被删除与它本身的读取(r)、写入(w)和执行(x)权限无关,而与它所在目录的写入权限有关,要删除一个文件,你需要对包含该文件的目录具有写入权限。如果你没有目录的写入权限,即使你对文件本身拥有全部权限也无法删除它(要删除一个文件你得看它的父级目录都给你了的什么权限,当然root用户有时候可以强制删除文件)原创 2024-01-23 23:36:09 · 924 阅读 · 0 评论 -
Linux的基本指令(二)(一般)
学完本篇我们对于Linux中文件的创建、删除、剪切、复制等功能就有了基本的认识与实践,但是相比于这些指令,在学习过程中一些指令以外的知识的补充会更加重要......原创 2023-11-25 19:06:06 · 1493 阅读 · 0 评论 -
Centos 7、Debian、Ubuntu中tree指令的检查与下载(了解)
在大多数Linux发行版中,`tree`命令通常不是默认安装的指令,这里我们讲述了如何检测是否已经安装了tree指令以及如何在各版本中的安装方式......原创 2023-11-24 14:32:10 · 2477 阅读 · 2 评论 -
Linux软件包管理器yum(一般)
用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件。(安装完毕之后可以通过拖拽的方式将文件上传过去)安装软件时由于需要向系统目录中写入内容。命令可以罗列出当前一共有哪些软件包。我们可以通过很简单的一条命令完成。会自动找到都有哪些软件包需要下载。安装软件只能一个装完了再装另一个。由于包的数目可能非常之多。表示操作系统发行版的版本。选择包时要和系统匹配。安装一个软件的过程中。原创 2024-01-23 23:54:58 · 410 阅读 · 0 评论 -
Linux知识简单总结(了解)
1、linux下给文件start.sh设置权限为自己可读可修改可执行,组内用户为可读可执行不可修改,其余用户没有任何权限,那么设置该文件权限的命令为。4、Linux 有三个查看文件的命令,若希望在查看文件内容过程中可以用光标上下移动来查看文件内容,应使用。2、在Linux中,file.sh文件的权限为-rw-r--r-x,其对应权限用数值形式表示为。6、 在使用mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项是。3、 如果系统的umask设置为244,创建一个新文件后,它的权限为。原创 2024-01-15 19:28:42 · 972 阅读 · 0 评论 -
Linux的开发工具(二):编译器gcc/g++ && Makefile(了解)
会不会makefile,从侧面说明了一个人是否具备完成大型Linux工程的能力,一个工程中的源文件不计其数,它们按照类型、功能、模块分别放在若干个目录中,makefile中定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作原创 2024-03-31 23:35:14 · 1117 阅读 · 1 评论 -
Linux的开发工具(一):编辑器vim(了解)
vim是vi的升级版,兼容vi所有指令的同时还有了新的特性,它还是Linux的多模式编辑器。(shift + g全部选中、数字 shitf + g指定n行选取,长按j也可)文件保存或退出、文件替换、找字符串、列出行号等,命令模式下shitf+:进入。文字输入删除,esc返回命名模式,使用最频繁的编辑模式。(此时处于正常模式,切换至插入模式才能输入文字)(如果第一次查找的不是想要的,可以按n继续。(如果第一次查找的不是想要的,可以按n继续。控制屏幕光标的移动、字符、字或行的删除等。原创 2024-01-24 23:45:24 · 1369 阅读 · 0 评论 -
Linxu的开发工具(三):缓冲区 && 调试器gdb(一般)
缓冲区是内存空间中的一块区域,在执行printf函数时,里面的字符串会被放入缓冲区中,这些存放在缓冲区中的数据在经历一次“刷新”后就可以在显示屏上显示了(程序结束时以及缓冲区满了时都会“刷新”缓冲区)原创 2024-04-03 13:54:04 · 762 阅读 · 2 评论 -
Linux的基本指令(三)(一般)
学完本篇我们就在上两篇关于Linux文件操作(复制、粘贴等)的基础上,进一步了解了文件的输出和输入重定向,以及如何查看大文本文件等内容,更重要的了解到了Linux中一条十分重要的设计理念:一切皆文件......原创 2023-11-26 18:59:22 · 1550 阅读 · 0 评论 -
进程的基本概念 && 进程的创建(重要)
在调用fork()函数后,父进程和子进程的创建是在fork()函数的运行中完成的而不是返回后完成的,即fork函数中的部分代码会被父子共享包括return id,因此返回两次原创 2024-04-04 23:48:02 · 1270 阅读 · 0 评论 -
Linux进程概念(三):/proc文件 与 进程的状态(重要)
**/R:运行状态,并不意味进程一定在运行中,而是表示进程要么在运行中要么在队列中S:可中断(ctrl + c)睡眠状态,进程在等待"资源"就绪(CPU执行进程的速度极快,显示设备读取速度慢,执行好的内容就会等待输入到显示设备上)T/t:停止状态,可以通过发送SIGSTOP / SIGCONT 信号让T进程停止 / 运行(t是被追踪时停止,比如调试时的打断点操作,T是纯粹的暂停状态)查看进程信号指令:kill -l(9、19、18、杀死进程、暂停进程、继续继续进程)原创 2024-04-04 23:49:10 · 550 阅读 · 0 评论 -
冯诺依曼体系结构 && 操作系统的基本概念(了解)
将多个被管理者对象进行描述形成它们各自的数据对象,然后根据这些数据对象选定一种特定的数据结构将这些数据对象组织起来,此时对被管理对象的管理工作就转化成了对特定数据结构的增删查改,这就是一个基本的建模过程原创 2024-04-03 23:54:53 · 759 阅读 · 0 评论