![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
a_struggling_monkey
Do more
展开
-
Linux下的静态库与动态库使用详解
一、库 库是已经写好的成熟的可以供人们复用的代码。操作系统暴露了自己的部分接口供我们使用,但是由于接口太复杂,有心的开发者就将这些系统调用接口进行了二次封装形成了库,这对于我们小白来说方便了很多。二、静态库1.什么是静态库? 程序在链接的时候把汇编生成的二进制目标文件(.o)与库的代码一起链接打包到可执行文件中,程序运行的时候将不再需要静态库 。这样的链接方...原创 2019-04-10 12:35:35 · 304 阅读 · 0 评论 -
进程控制——进程创建/进程等待
目录●进程创建:一、fork函数二、vfork函数 ●进程等待一、进程等待的必要性二、进程等待的方法三、进程等待实例●进程创建:一、fork函数1.定义:fork函数用于从已经存在的进程中创建一个新的进程。新的进程称为子进程,而原来的进程是父进程。#include <unistd.h>pid_t fork(void);返回值:子进程中...原创 2019-05-11 13:42:08 · 427 阅读 · 0 评论 -
进程间通信——信号量
一、什么是信号量 信号量本质是一个用于描述资源数目的计数器。主要用于同步和互斥。相关概念:1.临界资源:两个或多个进程看到的一份公共资源叫做临界资源。2.临近区:各个进程访问临界资源的代码叫做临界区。3.互斥:在临界区中,通过临界区访问临界资源,在某一个时刻只能有一个进程。(独占、排他)4.同步:为了解决有的进程周而复始的占有资源而其他进程长时间得不到资源的问题,...原创 2019-05-10 17:58:35 · 392 阅读 · 0 评论 -
进程间关系和守护进程
●进程间关系:一、进程组1.进程组是一个或多个进程的集合。2.每个进程除了有一个进程id外,还属于一个进程组。3.通常,进程组与同一作业相关联,可以接受来自同一终端的信号。4.和线程组相似,每个进程组有唯一的进程组ID,每个进程组有一个组长进程(组长进程ID等于进程组ID)。5.组长进程可以创建一个进程组,然后终止。6.和线程组不同的是,线程组组长终止,那么线程组就终止...原创 2019-05-15 16:26:13 · 265 阅读 · 0 评论 -
进程间通信——共享内存
目录●什么是共享内存 ●共享内存的原理 ●共享内存的特点 ●共享内存的数据结构●共享内存函数●server/client实例●什么是共享内存? 两个或多个进程共享一段特定的存储区,这块存储区就叫做共享内存。进程可以将共享内存挂接到它们自己的进程地址空间中,这样一来,不同的进程就可以进行读取或修改共享内存中的数据,实现了进程间通信。 ●共享内存...原创 2019-05-10 13:13:47 · 879 阅读 · 0 评论 -
重入和线程安全
一、概念线程安全:多个线程并发同一段代码时,不会出现不同的结果。常见对全局变量或者静态变量进行操作,并且没有锁保护的情况下,会出现该问题。重入:同一个函数被不同的执行流调用,当前一个流程还没有执行完,就有其他的执行流再次进入,称之为重入。一个函数在重入的情况下,运行结果不会出现任何不同或者任何问题,则该函数被称为可重入函数,否则,是不可重入函数。二、情况分类1.常见的线程不...原创 2019-05-15 13:06:14 · 131 阅读 · 0 评论 -
线程池
一、什么是线程池线程池=一个或多个线程+任务队列 线程池是一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets...原创 2019-05-15 11:58:17 · 147 阅读 · 0 评论 -
进程间通信——消息队列
一、什么是消息队列1. 消息队列提供了⼀个从⼀个进程向另外⼀个进程发送⼀块数据的⽅法。2.每个数据块都被认为是有⼀个类型,接收者进程接收的数据块可以有不同的类型值。(数据块:即消息队列)3.消息队列也有管道⼀样的不⾜,就是每个消息的最⼤⻓度是有上限的,每个消息队列的总的字节数是有上限的,系统上消息队列的总数也有⼀个上限。二、消息队列的结构消息队列在内核中可以认为是一个链...原创 2019-05-06 20:14:51 · 762 阅读 · 0 评论 -
自动化构建工具Makefile/makefile
目录一、makefile的背景二、makefile的编写及其原理 1.如何编写makefile 2.依赖关系: 3.依赖方法: 4.makefile原理: 5.项目清理:一、makefile的背景1. 也许长期使用Windows编程的程序员不知道...原创 2019-05-06 17:10:35 · 301 阅读 · 0 评论 -
生产者消费者模型
一、什么是生产者消费者模型?如下图所示,和我们生活中买东西一样,生产者将货物生产好了放到超市,我们消费者去超市消费货物。二、为何要使用生产者消费者模型 生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是...原创 2019-05-13 19:40:23 · 260 阅读 · 0 评论 -
下载进度条(彩色)
写一个下载进度条的demo: 1 #include<stdio.h> 2 #include<unistd.h> 3 #include<string.h> 4 int main() 5 { 6 int i=0; 7 char buf[102]={0}; 8 const char* label="|/-\\"...原创 2019-05-05 20:53:40 · 144 阅读 · 0 评论 -
Linux编辑器vim使用总结
目录一、vim的基本模式二、vim的基本操作三、vim正常模式命令集四、vim底行模式命令集五、vim简单配置一、vim的基本模式 vim常用的三种模式分别是命令模式、插入模式和底行模式,各模式的功能区分如下:1.正常/普通/命令模式: 控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式下,或者到底行模式。2.插入模...原创 2019-05-05 18:54:37 · 317 阅读 · 0 评论 -
进程间通信——管道
目录●进程间通信 1.进程间通信的目的 2.进程间通信的本质 3.进程间通信的分类●管道一、什么是管道?二、管道实现原理:三、匿名管道: 1.匿名管道是基于文件描述符的通信方式。 2.匿名管道原理: 3.站在文件描述符角度理解管道 4.匿名管道读写...原创 2019-05-02 14:49:01 · 205 阅读 · 0 评论 -
文件系统之inode和软硬链接
看了好几篇博客都没看懂inode软硬连接到底是个什么鬼,可能是大佬的博客太高深莫测,然后突然开窍......目录一、文件和硬盘二、inode三、硬链接四、软链接五、区分软硬链接一、文件和硬盘1.硬盘的最小存储单位叫扇区,每个扇区512字节。2.文件是存储在硬盘上的,我们通过系统调用读取文件其实是在读取硬盘,而操作系统读取硬盘时并不会一个扇区一个扇区读取,这样太慢...原创 2019-04-10 14:29:11 · 1057 阅读 · 0 评论 -
线程—POSIX线程库
一、什么是线程? 1.线程是进程的一个执行流,在一个进程内部运行的多种执行流。 2.Linux下没有真正的线程,是用进程模拟的,因此线程也叫轻量级进程。 3. 线程在进程的进程地址空间运行,第一个pcb称之为主线程,一个进程至少有一个线程。二、线程和进程共享和私有资源? 1.线程和进程共享: 数据段,代码段 、文件...原创 2019-03-27 16:23:11 · 583 阅读 · 0 评论 -
进程控制——进程终止/程序替换详解
●进程终止一、进程退出场景1.代码运行完毕,结果正确。2.代码运行完毕,结果不正确。3.代码异常终止。二、进程常见退出方法 ●正常终止(可以通过 echo $? 查看进程退出码):1.调用_exit函数#include <unistd.h>void _exit(int status);参数:status 定义了进程的终止状态,父进程通过wa...原创 2019-05-11 15:08:59 · 268 阅读 · 0 评论