
Linux
文章平均质量分 85
lu_1079776757
这个作者很懒,什么都没留下…
展开
-
Linux的基本命令
Linux的基本命令的用法原创 2017-11-23 20:39:13 · 204 阅读 · 0 评论 -
多线程(2)---(同步&互斥&互斥量)
上一个博客我们学习了线程的创建,如如何查看线程ID,线程与进程之间的区别等等,可以参考上篇博客线程(1)。而这一篇博客我们继续来学习线程,本篇博客我们的目标是:1、学会线程同步2、学会使用互斥量、条件变量线程同步与互斥mutex(互斥量) 大部分情况下,线程使用的数据都是局部变量,变量的地址空间在栈空间内,这种情况变量属于单个线程,其它线程无法获得这种变量。但是有的时候,很多变量都需...原创 2018-04-12 19:27:56 · 306 阅读 · 0 评论 -
守护进程
守护进程首先我们先来认识一下什么是守护进程?认识守护进程 守护进程也称为精灵进程(Daemom),是运行在后台的一种特殊的进程。它独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。比如ftp服务器,ssh服务器,Web服务器等。同时,守护进程完成许多系统任务。比如作业规划crond。 Linux系...原创 2018-04-17 19:57:46 · 1135 阅读 · 0 评论 -
进程间关系
今天我们的目标是学习进程间的几个关系:它们分别是进程组/作业/会话。 首先我们谈论第一个话题----进程组。我们先来了解一下它的概念,什么是进程组呢?显而,进程组就是一个或多个进程组成的集合。每个进程除了有一个进程ID之外,还属于一个进程组。进程组(Process Group) 进程组就是一个或多个进程组成的集合。每个进程除了有一个进程ID之外,还属于一个进程组。通常,它们与同...原创 2018-04-17 17:52:05 · 427 阅读 · 0 评论 -
Linux进程创建、等待、终止以及vfork
进程控制:进程创建:利用fork()创建一个子进程:#include<stdio.h>#include<unistd.h>int main(){ pid_t id = fork(); if(id < 0){ //fork()失败 perror("fork:"); }else if(id == 0){ //child ...原创 2018-04-16 22:37:37 · 353 阅读 · 0 评论 -
模拟实现进程创建函数process_create
利用fork( )、wait( )等函数模拟实现进程创建函数process_create#include<stdio.h>#include<unistd.h>#include<stdlib.h>typedef void *(*FUNC)(void *); typedef struct Arg{ int reg;} Arg;void* fun...原创 2018-04-16 18:15:11 · 575 阅读 · 0 评论 -
进程信号(2)
上一篇我们了解了信号的基本概念以及信号的产生方式,而今天我们继续学习信号。本文我们的目标是: 理解信号递达和阻塞的概念和原理首先我们看一下什么是阻塞信号?阻塞信号1、信号其他相关概念 实际执行信号的处理动作称为信号递达(Delivery) 信号递达有三种方式: 1、忽略 2、默认动作 3、自...原创 2018-03-29 11:27:11 · 287 阅读 · 1 评论 -
多线程(1)
之前我们学习了进程,现在我们又引入了一个新的概念线程,那线程又是什么呢?它和进程间的区别又有哪些呢?本篇博客就介绍了线程的相关知识。让我们一起来看看吧!线程的概念什么是线程呢? 在一个程序里的执行路线就叫做线程(thread)。更准确的来说,线程是一个进程内部的控制序列。。一切进程至少都有一个执行线程。 简言之,线程是代码的一个执行流。进程和线程的区别1、进程是资源竞争...原创 2018-04-10 16:06:47 · 314 阅读 · 0 评论 -
进程信号(1)
今天我们要来学习一下Linux下的信号。本节目标是: 1、掌握信号的基本概念 2、掌握信号产生的一般方式 现实生活中存在很多信号,比如说红绿灯,闹钟等等。当我们在人行道上走时,遇到了红灯,我们的第一反应就是停下来等待,而我们又为什么会做这个动作呢?是因为我们知道“红灯停,绿灯行”这个交通规则,而这个规则我们已经记住了,因此才会做出这个反应。 那么Linux下的信号的是什么呢...原创 2018-03-27 20:38:06 · 267 阅读 · 0 评论 -
进程信号(3)
之前我们学习了信号递达和阻塞的基本概念和原理,而今天我们将继续学习信号。本文我们的目标是: 1、掌握信号捕捉的一般方式 2、了解可重入函数的概念 3、了解竞态条件的情景和处理方式 4、了解SIGCHLD信号,重新编写信号处理函数的一般处理机制首先我们先来看一下信号捕捉的一般方式。之前我们提到过信号处理的几个常见的方式: 1、忽略此信号 2、执行该信号的默认处理动...原创 2018-04-02 18:03:46 · 296 阅读 · 0 评论 -
进程间通信(1) 管道
进程间通信首先我们先来了解一下进程间通信。进程间通信目的: 1.数据传输:一个进程需要将它的数据发送给另一个进程 2.资源共享:多个进程之间共享同一份资源 3.通知事件:一个进程需要向另一个或一组进程发送消息,通知他们发生了某种事件 4.进程控制:有些进程希望完全控制另一给进程的执行(如Debug进程),此时控制希望能够拦截另一个进程的所有陷入和异常,并能够即使知道它的状态...原创 2018-03-21 21:13:13 · 408 阅读 · 0 评论 -
进程间通信(4) 信号量
之前我们学习了管道,消息队列,共享内存,今天我们再来学一种进程间通信的方式-----信号量信号量 信号量本质上是一个计数器(不设置全局变量是因为进程间是相互独立的,而这不一定能看到,看到也不能保证++引用计数为原子操作),用于多进程对共享数据对象的读取,它和管道有所不同,它不以传送数据为主要目的,它主要是用来保护共享资源(信号量也属于临界资源),使得资源在一个时刻只有一个进程独享。在了解信号...原创 2018-03-24 19:59:03 · 287 阅读 · 0 评论 -
进程间通信(3) 共享内存
之前我们学习了进程间通信的两种方式------管道&消息队列,而今天我们再来学习一种方式-----共享内存。这时我们就要明白一个概念,什么是共享内存呢? 共享内存就是两个(或多个)进程占有同一段内存空间,这些进程可以是有亲缘关系的进程,也可以是完全不相关的进程。同一块物理内存空间被映射到两个进程,两个进程都可以访问这段共享空间从而实现了进程间通信。但是值得注意的是:Linux的...原创 2018-03-24 12:14:28 · 411 阅读 · 0 评论 -
进程间通信(2) 消息队列
昨天我们看了进程间通信的一种方式-----管道,那么今天我们继续学习进程间通信的另一种方式----消息队列。消息队列消息队列是由内核维护的一种链式结构。链表中每一个记录又称作消息,消息具有特定的格式和优先级别。 1、消息队列提供了一个从一个进程向另一个进程发送一块数据的方法 2、每个数据块都被认为是有⼀个类型,接收者进程接收的数据块可以有不同的类型值 3、消息队列也有管道⼀样的不...原创 2018-03-23 19:15:35 · 334 阅读 · 0 评论 -
基于链表和环形队列的生产者消费者模型
今天我们来学习一下生产者消费者模型。首先我先来给大家举一个简单的例子: 日常生活中,当我们缺少某些生活用品时,我们都会去超市进行购买,那么大家有没有想过,你是以什么样的身份去超市的呢?相信大部分人都会说自己是消费者,的确如此,那么既然我们是消费者,又是谁替我们生产这些各种各样的商品呢?当然是超市的各大供货商了,因此他们自然而然的也就成了我们的生产者。这样一来,生产者有了,消费者也有了...原创 2018-04-12 21:13:08 · 388 阅读 · 1 评论