Linux
NietzscheI
这个作者很懒,什么都没留下…
展开
-
命令行更新gcc
先获取 root 权限yum install centos-release-scl-rh centos-release-sclyum check-updateyum install devtoolset-4-gcc devtoolset-4-gcc-c++安装完毕后, 需要手动开启(如果需要自动开启, 需要加到 bashrc 中)source /opt/rh/devtoolset-4/...原创 2019-10-12 19:48:43 · 1364 阅读 · 0 评论 -
OSI模型与TCP/IP模型
协议分层为什么要协议分层网络协议比较复杂,如果不拆分,就太复杂分层之后有啥好处?a.拆分成多个层相当于拆分成多个模块,同时降低了整个系统的耦合程度b.根据实际需要,随时可以替换其中某一层的协议OIS七层模型OSI七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范。把网络从逻辑上分为了7层,每一层都有相关,相对于的物理设备,比如路由器,交换机。它最大优点是将服务,接...原创 2019-09-28 23:00:31 · 180 阅读 · 0 评论 -
生产者消费者模型
生产者消费者模型,它是一个多线程场景中的典型应用,应用广泛,完成某些操作的时候,需要一些数据,这样的数据可能由专门的线程/进程产生,在由专门的线程/进程使用。生产者消费者模型,它需要一个交易场所(存储数据的地方,可能是一个队列,也可能是一个栈,或者其他数据结构)。生产者负责生产数据,把数据放到交易场所中,消费者负责消费数据,把数据冲交易场所中取出。生产者与生产者之间是互斥关系。消费者与消费者...原创 2019-09-25 16:59:32 · 129 阅读 · 0 评论 -
Linux线程简单理解3
线程不安全//写多线程一定确保是多核的#include<stdio.h>#include<stdlib.h>#include<pthread.h>#include<unistd.h>#define Thread_num 2int g_count=0;void* ThreadEntry(void* arg){ (void)ar...原创 2019-09-21 10:10:27 · 129 阅读 · 0 评论 -
Linux线程的简单理解2
创建线程pthread_create()函数第一个参数执行一个虚拟内存单元,该内存单元的地址即为新创建线程的线程ID,属于NPTL线程库的范畴。线程库的后续操作,就是根据该线程的ID来操作线程的。结束线程1.让线程入口函数执行结束。(主要使用的结束方式)与进程一样2.pthread_exit 让本线程结束,pthread_exit 参数是一个void* 表示进程结束的返回值,很少用,一...原创 2019-09-21 09:24:14 · 135 阅读 · 0 评论 -
Linux线程简单理解
线程:**是操作系统能够进行运算调度的最小单位。**它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在一个程序里的一个执行路径就叫做线程。线程是一个进程内部的控制序列。一切进程至少有一个执行线程。线程在进程内部运行,本质是进程地址空间内运行。在Linux系统中,在cpu眼里,看到的PCB都有比传统的进程...原创 2019-09-05 20:51:47 · 240 阅读 · 0 评论 -
Linux进程间通信
进程间通信的目的数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它)们发生了某种事件(如进程终止时通知父进程)。进程控制:有些进程需要完全控制另一个进程的执行(Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并且能够及时知道它的状态改变。进程间通信发展管道...原创 2019-08-30 21:46:57 · 182 阅读 · 0 评论 -
动态库和静态库简单介绍
静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库。把一些.o文件打包成一起生成了一种特殊的二进程程序,自身不能直接执行,但是可以和其他的.c/.cpp文件编译生成了一个新的可执行程序。应用场景: 发布小程序时,可以使用静态库的方式编译生成一个单独的可执行程序并且不依赖其他库。发布比较方便。动态库(.so):程序在运行的时候才去链接动态...原创 2019-09-01 22:29:05 · 307 阅读 · 0 评论 -
简单shell实现
使用进程创建,进程等待和程序替换函数能实现一个低配版的shell 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 #include<unistd.h> ...原创 2019-08-31 22:36:05 · 245 阅读 · 0 评论 -
Linux进程控制
进程创建在Linux中fork函数是非常重要的函数,它从已存在进程中创建一个新进程。新进程称为子进程,而原进程为父进程#include<unistd.h>pid_t fork(void)返回值:子进程返回0,父进程返回子进程的pid,出错返回-1进程调用fork,当控制转移到内核的fork代码后,内核做:分配新的内存块和内核数据结构给子进程**将父进程部分数据内容...原创 2019-08-28 17:43:30 · 127 阅读 · 0 评论 -
Linux进程地址空间
首先来段代码 3#include<iostream> 4 #include<stdlib.h> 5 using namespace std; 6 int g_val=0; 7 int main() 8 { 9 pid_t id=fork();//父进程返回子进程的pid 子进程返回0 10 //两份进程共有一份代码,写实拷贝 11 ...原创 2019-08-27 20:28:46 · 148 阅读 · 0 评论 -
Linux环境变量
基本概念环境变量一般是指在操作系统中来指定操作系统运行环境的一些参数,如我们编写c/c++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。环境变量通常具有某些特殊用途,还有在系统当中通常有全局特性。常见环境变量PATH:指定命令的搜索路径HOME:指定用户的主工作目录(即用户登录到Lin...原创 2019-08-27 20:11:19 · 132 阅读 · 0 评论 -
linux进程概念
进程课本概念:程序的一个执行实例,正在执行的程序等内核观点:担当分配系统资源(cpu时间,内存)的实体描述进程—PCB进程信息被放在一个叫做进程控制块的数据结果中,可以理解为进程属性的集合。Linux操作系统下的PCB的进程的数据结构是:task_struct,task_struct是Linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的信息。task_strcut...原创 2019-08-22 22:06:40 · 120 阅读 · 0 评论 -
Linux简单的基本操作指令
ls指令语法:ls [选项][目录或文件]功能:对于目录,该命令列出该目录下的所有子目录和文件。对于文件,将列出文件名及其信息常用选项: -a 列出目录下的所有文件,包含.开头的隐含文件。 -d 将目录象文件一样显示。 -k 以k字节的形式表示文件的大小。 -l 列出文件的详情信息 -t 以时间排序2.pwd命令语法:pwd功能:显示用户当前所在的目录3.c...原创 2019-05-04 22:34:45 · 1477 阅读 · 3 评论