Linux部分
文章平均质量分 63
开始迷茫了
这个作者很懒,什么都没留下…
展开
-
Read-only file system\nsysctl只读文件系统加载报错怎么解决
问题定位首先根据经验可以知道这是权限的问题,可以使用mount命令查看下目录的属性,好巧不巧发现挂载的属性是只读的如何修改文件的挂载属性呢mount /proc/sys -o rw,remount这句强大的命令执行后,再查看挂载属性就变成了rw,紧接着继续执行程序不报错...原创 2020-06-09 19:02:21 · 2110 阅读 · 0 评论 -
Linux常用查看CPU信息的命令
查看CPU基本信息cat /proc/cpuinfo•processor 逻辑处理器的id。•physical id 物理封装的处理器的id。•core id 每个核心的id。•cpu cores 位于相同物理封装的处理器中的内核数量。•siblings 位于相同物理封装的处理器中的逻辑处理器的数量。常用的加检索条件的cat /proc/cpuinfo1 查看物理CPU的个数#cat /proc/cpuinfo |grep “ph原创 2020-05-12 09:49:27 · 13683 阅读 · 0 评论 -
Linux常用命令之操作磁盘命令
磁盘使用情况查看df命令含义:df可以查看磁盘的总量、使用情况、剩余情况、挂载情况常使用选项:-i :显示inode信息-h :使用默认的单位显示,一般M\K\G-k: 以K为单位显示-m:以M为单位显示du命令含义:查看某个目录下文件所占空间的大小参数选项:-a(all):全部文件与目录大小都列出来。-b(bytes):列出的值以bytes为单位输出。-k,-m:分别以K为单位和以M为单位。du默认单位k-h(human-readable):自动调节单位。-c(t原创 2020-05-11 10:28:58 · 1771 阅读 · 0 评论 -
进程间通信-------管道
进程间通信介绍我们知道进程间是存在独立性的,有自己的独立地址空间,所以说将进程通信起来首先要让他们看到一份公共资源,才有可能进行通信。 1、进程间通信的目的 传输数据 资源共享 通知事件 进程控制 2、进程间通信的分类(常把进程间通信叫做IPC) 管道 消息队列 共享内存 信号量认识管道1、理解管道 管道式Unix中最古老的通信形式。 管道是一个进程连接到另一个...原创 2018-05-22 12:28:21 · 248 阅读 · 0 评论 -
进程间通信------------消息队列
为什么会有消息队列?首先消息队列也是两个进程间进行数据传输的一个方式,除了这个作用外,还有一点就是当不同进程间传送消息时,由于进程进耦合度较高(一个进程的改变可能会影响到另一个进程)为了隔离两个进程,在两个进程之间抽出一块空间(消息队列),两个进程间传递的所有消息都必须通过消息队列。理解消息队列1、基本概念消息队列就是一个存放消息的链表,对消息队列有写权限的进程就可以向消息队列...原创 2018-05-22 21:01:51 · 248 阅读 · 0 评论 -
进程间通信----------共享内存
共享内存的原理描述共享内存共享内存就是借助同一块物理内存映射不同的虚拟地址空间,不同的虚拟地址空间代表着不同的进程,所以多个进程都能看到这一块内存,那么就可以同时对这块内存读写操作。 我们画张图感受一下: 组织共享内存共享内存是一块内存,它的数据结构中都有以下数据使用共享内存相关函数 shmget函数:用来创建共享内存int shmget(key_t ke...原创 2018-05-27 16:18:59 · 183 阅读 · 0 评论 -
面试常问-----------------Linux信号之信号的产生、信号的捕捉、其他几个重要的信号
理解信号拿生活中的例子来说吧。下课的铃声是一种信号,当我们接收到这种信号就知道该去吃饭或者是去玩,那么计算机中的信号也是类似的,进程可以发送信号也可以接受信号,信号处理时可以选择忽略也可能执行自定义的信号。 总而言之,信号有以下特点: 1、信号的种类有很多种。Linux下可以利用kill -l显示所有的信号,其中31号及以下为普通信号,34号及以上是实时信号。 2、在发生之前就知道对应此...原创 2018-06-15 16:42:23 · 937 阅读 · 0 评论 -
进程间通信-----------------信号量(主要用于同步与互斥p、v操作)
信号量的原理和本质信号量=计数器+等待队列信号量本身不具有数据交换的功能,只是起到一个管理通信资源的作用,实际上是计数器和等待队列。在进程通信的过程中只负责数据操作的互斥和同步功能。 信号量就是具有原子性的计数器,相当于一把锁,在每个进程要访问临界资源的时候,必须向信号量拿个锁,这样他才能够去访问“房间”(临界资源)。不让其他进程进来,此时信号量执行P()操作,在此过程中申请了一个锁...原创 2018-06-19 16:35:59 · 2660 阅读 · 0 评论 -
TCP/IP模型之应用层及HTTP协议
应用层的功能负责应用程序间的沟通来制定协议,通俗的来讲就是应用层会借助TCP、UDP协议在各种各样的程序之间传递数据(邮件、文件等等),这时候像应用层协议就可以规定这些数据的格式要满足什么样。常见应用层协议:(带*要熟知) –基于TCP的应用层协议 –基于UDP的应用层协议 *简单电子邮件传输协议(SMTP) *动态主机配置协议(DHCP) *文件...原创 2018-07-25 12:16:19 · 3924 阅读 · 0 评论 -
动态库和静态库
1、静态库以.a为后缀,在程序编译阶段把库的代码链接到可执行文件中,运行时不再需要静态库2、动态库原创 2018-07-30 09:20:45 · 150 阅读 · 0 评论 -
如何向面试官讲述进程间通信
首先不着急一上去就说通信方式,我们可以说一说为什么会有进程间通信??? 首先我们知道进程组织的时候是一个结构体,进程与进程之间是相互独立的,有独立的虚拟地址空间,但是有的时候想要在两个进程之间实现数据传输、资源共享、通知事件(例如进程终止时会通知父进程)以及进程控制(debug进程可以控制其他进程的执行)这些功能时就需要两进程之间通信进行交互,所以由内核提供一份公共资源之要让两进程都能访问就可以...原创 2018-07-22 00:44:25 · 3429 阅读 · 5 评论 -
【TCP/IP模型之传输层】详解TCP三次握手四次挥手过程、TCP的可靠性传输以及粘包问题
认识端口号端口号是由操作系统动态分配的。用于TCP/IP协议,在标识通信起到一定的作用。常见的端口号ssh服务器:22 ftp服务器:21 telnet服务器:23 http服务器:80(但是也不是绝对的,这只是一个习惯) https服务器:443 一个进程可以绑定多个端口号,但是一个端口号只能被一个进程绑定(特殊情况fork创建的子进程和父进程可以绑定同一端口号,这是由...原创 2018-07-27 00:48:46 · 805 阅读 · 0 评论 -
认识基础I/O、文件系统
回顾c语言中的文件操作接口 fopen(FILE* fp,char flag); fclose(FILE* fp); fwrite(char* msg,int len,size_t count,FILE*fp); fread(void * msg,size_t size,size_t count,FILE* fp); 其中flag表示打开文件的方式,”w”(只写)”...原创 2018-05-15 19:01:30 · 280 阅读 · 0 评论 -
封装fork/wait等操作, 编写函数 process_create
封装fork/wait等操作, 编写函数 process_create(pid_t* pid, void* func, void* arg), func回调函数就是子进程执行的入口函数, arg是传递给func回调函数的参数. 1 #include<unistd.h> 2 #include<stdio.h> 3 #include<sys/wa...原创 2018-05-10 00:40:50 · 174 阅读 · 0 评论 -
认识进程
描述进程(PCB–进程控制块)1、Linux下描述进程的结构体叫做task-struct(进程控制块)windows下叫做PCB。 2、task-struct中包含进程的信息,其内容可以分为 1)标识符信息:用来区别其他进程的唯一信息。(pid) 2)程序计数器:记录即将被执行的下一条指令的地址。 3)进程调度信息:进程状态、进程优先级。 4)内存指针:程序代码指针、进程相关数据指针...原创 2018-04-17 18:03:16 · 244 阅读 · 0 评论 -
认识环境变量
进程退出场景代码运行完毕,结果正确代码运行完毕,结果不正确代码异常终止(ctrl+c退出)常见退出方法 从main返回调用exit()//终止前会刷新缓冲区_exit()//强制终止 退出时可以借助echo $?来查看退出码,但是这条指令只能看到离他最近的上一条进程的退出码 main函数返回 1 #include<stdio.h>...原创 2018-04-23 17:48:40 · 132 阅读 · 0 评论 -
Linux如何设置环境变量
1、 export PATH=$PATH:hello【只对当前bash生效】 将环境变量通过添加路径的方式来修改 2、修改用户目录下的.bash_profile文件,在其中加入路径,下次进入此用户就可以生效。【只对单个用户有效】 例如:在 .bashrc定义环境变量,Linux下次启动就生效 3、 getenv() 获取某一个环境变量,...原创 2018-04-23 18:07:41 · 189 阅读 · 0 评论 -
获得环境变量
获取环境变量1、命令行第三个参数: 1 #include<stdio.h> 2 int main(int argc,char* argv[],char* env[]){ 3 int i=0; 4 for(;env[i]!=NULL;i++){ 5 printf("%s\n",env[i]); 6 } 7 retur...原创 2018-04-24 19:54:34 · 394 阅读 · 0 评论 -
fork(),vfork()创建进程
fork()函数1、两个返回值,父进程返回它的子进程的id,子进程返回0. (原因:fork()创建了子进程,创建好了之后就会从fork之后开始执行,此时子进程和父进程都会往下走,所以都会有return 0;就有两个返回值) 2、创建子进程是以父进程为模板,代码共享,数据采用写时拷贝的方式各自拥有一份。 3、父子进程执行的顺序不确定,取决于操作系统的调度。 vfork()函数...原创 2018-04-25 08:05:25 · 344 阅读 · 0 评论 -
页表和虚拟地址空间
页表是什么?先通过程序引出页表 1 #include<stdio.h> 2 #include<unistd.h> 3 #include<stdlib.h> 4 int g_val=100; 5 int main(){ 7 pid_t pid=fork(); 8 if(pid==0){ ...原创 2018-04-25 09:26:05 · 1692 阅读 · 0 评论 -
面试常考--------访问空指针或者野指针的后果
访问野指针大家都知道会1、引起程序崩溃,但是这样解释不够具体,为什么程序会崩溃?? 2、访问野指针导致进程异常终止这个回答相对就又深了一个层次,那么进程异常终止又是怎么回事? 所以最全面的回答应该是访问指针的时候虚拟地址就会向物理地址映射,此时页表会去查看这块地址,而这块地址被存放在只读区,当页表发现地址是无效的,就会反映给操作系统,操作系统就会发送11号信号终止此进程,所以进程异常终止程序崩...原创 2018-04-25 09:49:36 · 4180 阅读 · 0 评论 -
进程终止
进程退出场景代码运行完毕,结果正确代码运行完毕,结果不正确代码异常终止(ctrl+c退出)常见退出方法从main返回调用exit()//终止前会刷新缓冲区_exit()//强制终止异常退出:ctrl+c,about3函数,进程收到某种信号 退出时可以借助echo $?来查看退出码,但是这条指令只能看到离他最近的上一条进程的退出码 1 #include<...原创 2018-04-25 10:56:18 · 328 阅读 · 0 评论 -
进程等待-解决僵尸进程
为什么要进程等待这又得说到僵尸进程了https://blog.csdn.net/cx2479750196/article/details/79963888, 总结的来说,就是子进程退出,但是让子进程帮忙做事的父进程一直不查看子进程做事的结果,所以子进程进入僵尸状态,我们可以通过杀死父进程来退出此状态(但是很暴力),所以我们可以采取让父进程等待,让他记得要回收子进程资源,获取子进程的退出信息。...原创 2018-04-25 12:52:27 · 331 阅读 · 0 评论 -
控制进程----------------创建进程、进程终止、进程等待
创建进程https://blog.csdn.net/cx2479750196/article/details/80073295终止进程https://blog.csdn.net/cx2479750196/article/details/80076168进程等待https://blog.csdn.net/cx2479750196/article/details/80076...原创 2018-04-25 13:20:30 · 169 阅读 · 0 评论 -
进程的程序替换
怎么理解程序替换创建子进程就是为了执行父进程交给他的任务,但是不知道子进程的代码,那么操作系统将可执行程序加载到内存中并且把它的代码替换给子进程,来完成指定的事情,这个过程没有创建子进程。./hello回车就执行hello.c的内容,经过程序替换子进程就会执行打印hello的任务。 底层:...原创 2018-05-09 19:51:24 · 551 阅读 · 0 评论 -
自主实现的shell
引出shell 从这张图我们可以看出,每当我们敲下一条指令就会相应解释并且执行此指令,但是没有敲指令的时候他总是处于等待状态中。 这就类比一个死循环,一直等待指令的输入,输入指令后,创建子进程并且将子进程替换成命令,执行子进程的同时父进程要一直等待子进程的执行结束,从而实现交互。程序实现shell思路: 1、获取命令行 2、解析命令行 3、创建进程,让子进程进行程序替...原创 2018-05-10 00:20:35 · 131 阅读 · 0 评论 -
Linux基础指令
1 ls指令ls[选项][目录或文件] 对于目录,使用此命令可以列出该目录下所有的子目录和文件;对于文件则列出文件名以及其他信息。 例如:ls -r:目录反向排序 [cxx@localhost ~]$ ls 1-class Desktop Documents Downloads Music Pictures Public Templates Videos dir2 ...原创 2018-03-19 12:02:35 · 287 阅读 · 0 评论