Linux
文章平均质量分 87
困得睁不开眼
引发思考是一种高水准的审美调动
展开
-
单例模式--含义是某一个类,在一个进程中只有唯一的一个对象
单例模式表示的含义是在某一个类,在一个进程中只有唯一的一个对象 并且在语法角度上进行制约 单例模式是一种设计模式,设计模式可以理解为经典问题场景下的经典解决方案。(方案一)简易版本 对象定义后数据立即加载到内存 (饿汉模式)(方案二)对象定义出来 先不着急加载到内存,等到第一次使用的时候,再将数据加载到内存 (懒汉模式)饿汉模式#include <st原创 2018-06-19 21:59:32 · 2646 阅读 · 5 评论 -
线程的基本概念(二)
上一篇讲了如何组织线程线程控制线程的创建#include<pthread.h>int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);参数:第一个...原创 2018-06-18 21:59:51 · 624 阅读 · 1 评论 -
读者写者之模型--同步问题
再上一篇中,介绍了生产者消费者模型[https://blog.csdn.net/Misszhoudandan/article/details/80715426] 今天介绍读者写者模型(读多写少的场景)场景描述:写者负责再资源池中写读者负责从资源池中读数据同一时间内不允许多个写者进行写,但允许多个读者进行读当写者和读者都准备占用资源池时,写者优先占用资源池(此问题描述的时写者优...原创 2018-06-17 21:59:50 · 534 阅读 · 0 评论 -
网络基础(1)TCP/IP协议 网络传输过程中的封装和分用
初识协议: 协议理解为一种约定 在计算机之间进行数据传输时,对于不同的数据格式,对应不同的传输和接收方式,这就需要约定数据格式。网络协议分层:TCP/IP五层协议模型: 下面来解释各层的含义即功能: 结合网上淘宝购物来举例理解:应用层:负责应用进程之间沟通。我们所说的主机之间进行通信,归根结底是两个主机上的两个应用进程之间进行沟通,网络编程也是针对应用层,主要协议...原创 2018-06-17 21:59:03 · 3176 阅读 · 0 评论 -
线程的基本概念(一)
一、线程基本概念线程是一个程序里的一个执行路线。 进程是一组线程 从资源分配角度: 1.进程(线程组)是资源管理分配的最小单位 2.线程(轻量级进程)是调度或执行的最小单位 之前介绍的都是单线程进程,即一个进程中只有一个线程, 一个线程拥有一个pcb,那么一个进程就拥有一组pcb 线程之间数据的共享和私有关系;共享: 1.同一块地址空间,所以代码、全局数据、堆栈...原创 2018-06-16 22:00:17 · 421 阅读 · 0 评论 -
经典生产者消费者模型
在对linux 下的进程和线程的学习后,总结一下生产者消费者模型场景描述:生产者负责在生产池中进行生产消费者负责消费生产池中的生产物同一时刻生产池中只能有一个生产者/消费者生产池中没有生产物时,消费者阻塞,直到生产者进行生产之后(生产池不未空),系统再唤醒消费者进行消费生产池为满时,生产者阻塞,直到消费者进行消费之后(生产池未满),系统再唤醒生产者进行生产建立模型:...原创 2018-06-16 21:59:21 · 429 阅读 · 0 评论 -
可重入函数
在上一篇介绍了信号的处理过程,那么信号处理过程会从用户态到内核态切换,并且信号处理函数与主控制流是不同的执行流。一、不可重入函数 那么就会带来一些问题,例如当你在进行头插node1(p->next=head;head=p;),只执行了第一句(p->next=head;)收到一个信号,并且在这个信号的处理函数中又再次调用头插node2。node2插入成功时,返回主空控制流,接着...原创 2018-06-08 22:02:13 · 230 阅读 · 0 评论 -
Linux下信号的基本概念
之前我们按下Ctrl+C会直接终止一个进程,其实是个当前的前台进程发送了一个SIGINT信号一、信号的基本概念信号的几种产生方式:1.键盘键入,用户在终端按下某些键时,终端程序会自动发送信号给前台进程。例如Ctrl+C产生SIGINT信号,Ctrl+\产生SIGQUIT信号,Ctrl+Z产生SIGTSTP 信号(将该进程放在后台执行)2.硬件异常,程序执行过程中触发某些异常,由硬件...原创 2018-06-08 22:01:44 · 358 阅读 · 0 评论 -
线程的基本概念:同步与互斥关系、什么是死锁
在前面两篇中介绍了线程的基本概念和线程控制 今天来看一下线程之间的同步和互斥关系互斥关系线程之间的互斥关系 对于一块临界资源,同一时间只能有一个线程进行访问,对于之前学习的进程间通信中讲的管道和消息队列,均内置的互斥同步机制。大部分情况下,线程使用的函数都是全局的,如果这样的话,就可能发生当一个线程正在访问一资源时,另外一个线程也来访问该资源,此时就可能发生逻辑错误。经典场...原创 2018-06-21 08:04:34 · 594 阅读 · 0 评论 -
进程间通信----管道(一)
管道理解为内核为我们申请的一段内存匿名管道只能进行具有亲缘关系之间的进程进行通信 调用pipe()函数创建一个管道 int pipe(int pipefd[2]);//参数为一个数组,用于操作系统给管道分配两个文件描述符pipefd[0]为管道的读端pipefd[1]为管道的写端下来看一个例子,实现从标准输入读取数据,写入管道,从管道读取数据,写入...原创 2018-05-16 17:40:43 · 232 阅读 · 0 评论 -
符号链接和硬链接,静态库和动态库
这里只是要求简单理解操作系统是如何管理文件的,我们用stat命令查看一个文件的相关信息解释上面文件信息中的三个时间(acm):Access:最后访问时间Change:属性最后修改时间Modify:文件内容最后修改时间inode 存放文件元信息文件是如何在磁盘上存放的呢,i节点表中存放文件的inode,其实我们创建一个文件就会为这个文件分配一个inode标号我们访问一个文件其实就是找到这个文件的i...原创 2018-05-15 16:05:45 · 1251 阅读 · 0 评论 -
文件描述符 文件句柄 重定向
一文件相关的系统调用C语言标准库函数中有对文件的操作fopen(),fwrite(),fread(),fclose();等 FILE *fd=fopen("./test.txt","w"); ...原创 2018-05-14 16:26:20 · 894 阅读 · 0 评论 -
进程的退出状态 和 进程等待 exit()和_exit(),wait()和waipid()
一、进程退出当一个进程终止了,我们需要知道进程退出时的状态,我们需要通过进程结束时的退出码来识别。进程正常结束时:1.从main()函数返回2.调用exit()函数3.调用_exit()//系统调用我们可以用(echo $?)查看上一次进程执行结束的退出码。来看下面一个例子:#include <stdio.h>#include <stdlib....原创 2018-05-06 17:36:14 · 4077 阅读 · 0 评论 -
进程的创建,fork()和vfork()的不同以及认识虚拟地址空间,环境变量的了解
一、环境变量我们说程序是一个可执行的二进制代码,在Linux下一个命令也是一个程序,例如ls命令,我们知道当我们敲下ls,回车之后,系统就会执行这条命令。但是我们自己的可执行程序却要指明路径才可以执行。ls命令是系统命令,是放在bin目录下。如何让自己写的可执行程序也像系统命令那样不用指明路径来执行方法一:我们自己将自己写的命令(可执行程序)放到/bin 目录下,这样就是...原创 2018-05-05 17:03:03 · 504 阅读 · 0 评论 -
Linux下理解进程,fork()创建子进程
进程初认识进程的概念(比较抽象):程序运行的实体 作为资源分配的基本单元进程的理解:什么是进程 //hello.c#include <stdio.h> ...原创 2018-04-21 23:42:53 · 11794 阅读 · 0 评论 -
Linux 下目录的介绍
以下是列出一部分Linux下根目录的一些子目录/usr 目录包含所有的命令、程序库、文档和其他文件。这些文件在正常操作中不会被改变。这个目录页包含你的Linux发行版本的主要应用程序,具体的/ur/bin 存放应用程序,/usr/share 存放共享数据,/usr/lib 不能直接运行的但是却是许多程序运行时所必需的一些函数库文件,/usr/local 存放软件升级包。/usr/sh...原创 2018-03-17 20:26:34 · 170 阅读 · 0 评论