Linux下控制环境变量 is a project mainly written in , based on the .查看环境变量 查看某一环境变量:比如我们需要查看HOME这个环境变量,我们可以在shell下直接输入echo $HOME 我们可以把所有的环境变量和环境变量的值都打印出来 打印环境变量 libc中定义的全局变量environ指向环境变量表,environ没有包含在任何头文件中,所以 在使用时 要用extern声明...
Linux下修改PATH环境变量 is a project mainly written in , based on the .Linux下有很多环境变量,PATH就是其中的一种 PATH 可执行文件的搜索路径。ls命令也是一个程序,执行它不需要提供完整的路径名/bin/ls,然 而通常我们执行当前目录下的程序a.out却需要提供完整的路径名./a.out,这是因为PATH 环 境变量的值里面包含了ls命令所在的目录/bin,却不包含a.out所在的目...
进程等待 is a project mainly written in , based on the .进程等待于原因 一个进程虽然退出了,但是该进程还保留了很多对于程序员或者系统管理员来说有用 的信息。比如,该进程识如何退出的,是正常退出,还是出现了错误,还是被其他进程结束掉,总结来说这个进程的退出码是什么;这个进程占用的CPU时间还有用户时间是多少。 这个时候为了回收这些信息我们就需要父进程调用进程等待函数来进程 信息的一些回收...
Linux的僵尸进程 is a project mainly written in , based on the .僵尸进程的简单理解 linux中有几种进程状态,其中有一种特殊就是僵尸进程,个人理解是可以这样理解,就是我们 的子进程已经退出了,但是子进程退出了之后无家可归,就是一个飘移的孤魂野鬼一样,所以形象的取名字叫做僵尸进程。 僵尸进程的结构 其实僵尸进程识一个进程调用exit退出之后留下的一个数据结构。处于僵尸状态的进程,...
进程程序替换 is a project mainly written in , based on the .引入进程程序替换的概念 一般在fork了一个子进程之后,子进程往往会调用exec函数组来执行其他的程序,因为我们的子进程不可能直接执行很多的功能,这个大家在以后的操作中会慢慢的体会到 程序替换的几个特点 进程在使用exec函数族进程进程替换的时候,并没有创建一个新的进程,所以当前进程的进程ID并没有改变。exec函数族只是用磁盘...
Linux网络端口 is a project mainly written in , based on the .Linux下端口个数 首先简单介绍一下Linux下的端口的函数,当Linux各个主机之间进行通信的时候我们需要将某些数据进程传输,这个时候就需要将数据传入到某一个特定 的主机,这个时候就使用了TCP/IP协议,IP地址是用来标识互联网的唯一主机,端口号用来标识特定主机上面的唯一的网络进程,IP地址+端口号就可以标识互联网中的唯一进程...
进程间通信--命名管道 is a project mainly written in , based on the .几个术语 二义性:当我们往一个管道里面写端写数据的时候,比如写一个hello的时候,当我们写到he的时候,读端就已经开始读取数据了,所以这是不对的,这就是二义性临界资源:多个流可以访问的一个共同的存储资源临界区:访问临界资源的代码叫做临界区互斥:任一时候只能有一个进程利用临界资源访问临界区,并且是以原子性访问原子性:要么访问,要么没...
循环冗余检验CRC is a project mainly written in , based on the .CRC简介 循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或电脑文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误。它是利用除法及余数的原理来作错误侦测的。 在数据传输过程中,无论传输系统的设计再怎么完美,差错总会存在,这种差错可能会导致...
IPC--信号量 is a project mainly written in , based on the .信号量概念理解 信号量本质上 是一个计数器,用来统计临界资源申请资源的个数。其中的二元信号量的 值是0或者是1,即是要么是有,要么是无。信号量本身也是临界资源,所以一定要保证其原子性。信号量的工作原理:两个进程共享一个信号量sv,一个进程访问的sv的时候,进行的是P操作即是减1操作,开始的时候信号量是1,它得到信号量进入临界资源。当...
IPC--消息队列 is a project mainly written in , based on the .消息队列的特点 消息队列是生命周期是随进程的,同时消息队列可以实现的是消息的传递方向是双向的。接受者和发送者时通过发送一个数据块来进性消息传递的,每个消息的数据类型不一样依次来进行区分我们该取哪个数据。消息队列是基于消息的,并不是像管道一样基于字节流,因此我可以一次放入或者取出一个数据块,另外也不是先进先出的。但是消息队列也有一个最...
IPC--共享内存 is a project mainly written in , based on the .有了之前的学习经验,共享内存对我们学习起来相对简单一些了,这里简单说说共享内存的一些,然后对于函数的分析直接在代码里面的注释部分有说明,如果还是不懂,可以先看看前面的关于IPC–信号量还有IPC–消息队列的讲解 共享内存以传递数据为目的,速度最快,不需要数据在内存还物理内存的来回的拷贝,直接访问访问虚拟地址空间 共享内存没有同步与...
常见的路由选择算法 is a project mainly written in , based on the .一、路由表 所谓路由表,指的是路由器或者其他互联网网络设备上存储的表,该表中存有到达特定网络终端的路径,在某些情况下,还有一些与这些路径相关的度量。 二、常见路由表生成算法 路由算法是提高路由协议功能,尽量减少路由时所带来开销的算法。当实现路由算法的软件必须运行在物理资源有限的计算机上时高效尤其重要。路由算法必须健壮,即在出现...
地址解析协议ARP is a project mainly written in , based on the .设计需求 ARP协议解决的问题就是:在同一个局域网中,解决主机IP地址和硬件地址的映射问题 基本使用原理 当数据在网络中某一条链路传输的时候我们知道目的主机的IP地址,但是不知道硬件地址,ARP协议就是解决这个问题的一个协议,IP协议可以使用ARP协议找到相应的硬件地址 因为IP地址和下面的硬件地址没有直接的联系,这个时候就通...
NAT技术和代理服务器 is a project mainly written in , based on the .一、代理服务器 所谓“代理”,就是代而劳之的意思。代理服务器就是代理网络用户去取得网络信息,形象的说:它是网络信息的中转站,使得一个网络终端和另一个网络终端不直接进行相连,代理网络用户去取得信息。主要工作在OSI的会话层中。 一个完整的代理请求过程为:客户端首先与代理服务器创建连接,接着根据代理服务器所使用的代理协议,请求...
程序的编译和链接过程 is a project mainly written in , based on the .一.虚拟机、linux简介 简单介绍一下虚拟机还有就是各种操作系统,比如centos,Ubuntu 操作系统:linux(centos、Ubuntu、redhat),Android,Windows(xp、win8、win10) 进程,多个程序,分时技术,并行技术 一次打开多个程序,我们在只有一个cpu,如何让这些程序进...
谁知道静态成员的纠结心境 is a project mainly written in , based on the .我们在实际开发的过程中,可能需要某些类的成员变量并不是针对每一个对象的,而是针对每一个类而言的,比如在银行中有一个利率数据,我们希望的是,当一个利率改变的时候,所有的对象都能够看到这个改变的数据,并利用它,而不是每一个对象都有一个利率成员变量。这个时候就设计到了静态成员变量。 一. 内存那些事 静态成员变量是存放在静态...
线程互斥和同步-- 互斥锁 is a project mainly written in , based on the .一. 线程分离 我们一般创建的线程是可结合的,这个时候如果我们调用pthread_jion()去等待的话,这种等待的方式是阻塞式等待,如果主线程一直等待,主线程就无法做其他的事情了,所以应该使用线程分离,让子线程由操作系统回收,主线程就不管了。 不管线程是否分离,它始终是在进程的内部执行的。 使用的函数接口是pthread...
Vim编辑文章后不能修改 is a project mainly written in , based on the .我们在使用vim打开一个文件的时候,经常会弹出下面的界面 为什么会出现这个界面呢 用vim编辑文件(如这里的test.txt)时,系统会自动产生一个文件叫.test.txt.swp.如果正常退出,此文件会被自动删去.如果上次非正常退出,如果再编辑它,系统会首先查.test.txt.swp 是否存在,如果存在,就会问你如何处理....
哈希--直接定值法和除留取余法 is a project mainly written in , based on the .1. 哈希是一种算法,哈希表是用哈希算法构造出来的一种数据结构 2. 哈希算方法的几种方法 直接定值法 这里有一个例题,就是我们想判断某一字符串中,某一个字符出现的个数,我们可以使用哈希的思想,就是可以遍历一遍字符串,然后开辟一个拥有26数据的整型数组,然后初始化全部为0,然后统计利用一种映射的思想,遍历字符串的时候,就把...
HTTP项目1.0 -- HTTP协议基础知识 is a project mainly written in , based on the .一. HTTP之URL篇 首先来看一下,我们一般在上网的时候,地址栏中经常会显示的信息,这里就举一些简单的例子 https://www.baidu.com https://113.2.7.58.25/a/b/c.html 从上面的简单的例子我们把url分成了以后的几个部分,请看下图 第一个协议就不用...