自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

mignatian的博客

靡不有初鲜克有终

  • 博客(18)
  • 收藏
  • 关注

原创 Linux (十一) 线程控制(线程的创建,等待,分离)

POSIX线程库 与线程有关的函数构成了一个完整的系列,绝大多数函数名字都是以“Pthread_”打头的 要是用这些函数库,要通过引入头文件 连接这些线程函数库时要使用编译器命令的“-lpthread”选项创建线程int pthread_creat(pthread_t *thread,const pthread_attr_t *attr,void *(*start_routine...

2018-04-25 16:45:10 136

原创 Linux(九)进程信号(gdb调试多进程程序)

因为在默认设置下,在调试多进程程序的时候GDB只会调试主进程。其实GDB可以同时调试多个程序,但是想要调试还要设置fllow-fork-mode(默认值:parent)和detach-on-fork(默认值:on)parent on 只调试主进程child on 只调试子进程parent off 同时调试两个进程,...

2018-04-25 11:38:35 253

原创 Linux (九)进程信号(进程中信号处理实例,可重入函数)

上篇博客我们说了闹钟函数alarm和pause函数,我们将他们结合起来写一个mysleep#include<stdio.h>#include<signal.h>#include<unistd.h>void sig_alrm(int signo){}unsigned int mysleep(unsigned int nsecs){ ...

2018-04-24 16:16:30 613

原创 Linux (八)进程信号(信号产生,阻塞信号,捕捉信号)

信号的基本概念为了理解信号,举一个我们熟悉的例子 用户输入命令,在shell下启动一个前台进程 用户按下CTRL-C,这个键盘输入产生一个硬件终端 如果CPU当前正在执行这个进程的代码,则该进程的用户空间代码暂停执行,CPU从用户态切换到内核态处理硬件中断 终端驱动程序将CTRL-C解释成一个SIGINT信号,记在该进程的PCB中,当某个时刻要从内核返回到该进程的用户空间代码继续执行之...

2018-04-23 16:20:46 863

原创 Linux (十)线程的基本概念

什么是线程? 在一个程序里的一个执行路线就叫做线程。更准确的定义是:线程是一个进程内部的控制序列 一切进程至少有一个执行线程进程和线程 进程是资源竞争的基本单位 线程是程序执行的最小单位 线程共享进程数据,与其他线程共享一块虚拟地址空间,但是也拥有自己的一部分数据:线程ID,一组寄存器,栈,ERRNO,信号屏蔽字,调度优先级一进程的多线程共享 同...

2018-04-21 11:27:46 132

原创 linux (七)进程间通信(信号量)

在上篇博客说的共享内存是没有同步与互斥的!但是今天说的信号量主要用于同步和互斥我们先来看看什么是进程互斥由于各进程要求共享资源,而有些资源需要互斥使用,因此个进程间的竞争使用这些资源,进程的这中关系叫做进程的互斥 系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源或互斥资源 在进程中涉及到互斥资源的程序段叫做临界区举例说明进程的同步与互斥实例 互斥:在电影院买票当一个进...

2018-04-20 17:46:45 760

原创 Linux (六)进程间通信(共享内存)

上篇博客我们讲了,匿名管道,命名管道,消息队列,并使用了他们,初步了解了进程间通信的概念。下面我们要说共享内存。共享内存函数 shmget函数 功能:用来创建共享内存 原型 int shmget(key_t key,size_t size,int shmflg); 参数 key:这个共享内存段名字 size:共享内存大小 shmflg:由九个权限...

2018-04-19 18:15:37 710

原创 数据结构之链式队列

上一篇我们讲了,顺序队列,那我们如何用链表实现一个队列呢。 下面来看#pragma once#include<stdio.h>#include<stdlib.h>#include<stddef.h>#define HEADER printf("\n==========%s==========\n",__FUCTION__)typedef ch...

2018-04-18 11:42:06 162

原创 数据结构之顺序队列的实现

上一篇博客我们讲了顺序栈和链式栈的实现,今天我们来看一下顺序队列的实现#pragma once#include<stdio.h>#include<stdlib.h>#include<stddef.h>#define HEADER printf("\n==========%s==========\n",__FUNCTION__)#define M...

2018-04-18 10:30:02 316 2

原创 数据结构之链式栈的实现

前面我们讲了顺序栈的实现,现在我们来看链式栈的实现#pragma once#include<stdio.h>#include<stddef.h>#include<stdlib.h>#define HEADER printf("\n============%s===========\n",__FUCTION__);typedef char li...

2018-04-17 21:47:22 385

原创 数据结构之顺序栈的实现

我们知道栈可以完成的基本操作是入栈,出栈,取栈顶元素,可以由顺序表形式实现,也可以由链表形式实现 今天我们就来实现一下顺序栈 首先来看下顺序栈的实现seqstack.h#pragma once#include<stdio.h>#include<stdlib.h>#include<stddef.h>#define HEADER printf("\...

2018-04-17 20:58:24 991

原创 linux (五)进程间通信(匿名管道,命名管道,消息队列)

进程间通信进程间通信的目的 数据传输:一个进程需要将他的数据发送给另一个进程 资源共享:多个进程之间共享同样的资源 通知事件:一个进程需要向另一个或一组进程发送消息,通知它发生了某种事件(如进程终止时要通知父进程) 进程控制:有写进程希望完全控制另一个进程的执行,此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够即使知道他们的状态改变。进程间通信分类 管道: 匿名管道 ...

2018-04-16 10:53:06 868

原创 linux(四)理解文件系统和对静态库和动态库的理解

我们使用ls-l的时候看到的除了看到文件名,还看到文件的元数据拥有的权限 硬链接数 文件所有者 组 大小 文件最后修改时间 文件名ls-l读取存储在磁盘上的文件信息,然后显示出来 其实这个信息除了通过这种方式来读取,还有一个sata命令能够看到更多的信息 上面的执行结果有几个信息需要解释一下 inode 为了能解释清楚inode我们先了解下文件系统 超级块:存...

2018-04-12 19:43:30 250

原创 Linux(三)文件描述符和FILE结构体

文件描述符在我们介绍文件描述符之前。我们先来看一下 系统调用接口:write,read,close,open,lseek,下面我们来尝试用下open系统调用接口。 我们可以看到,我们通过open创建一个文件给它权限0644 接下来我们写一个while循环通过write系统调用将我们的msg写进myfile这个文件里 open参数的介绍: O_RDONLY:只读打开 O_WR...

2018-04-11 13:53:14 1844 1

原创 数据结构之带头结点带环的双向链表

1 #include <stdio.h> 2 #include"dlinklist.h" 3 void dlinklist_init(dlinklist **head)//初始化带头结点带环的双链表 4 { 5 if(head == NULL) 6 { 7 ...

2018-04-07 10:59:30 187

原创 数据结构之单链表常见面试题2

判断两链表是否相交,返回交点(考虑带环)linklist *linklist_iscrossplus(linklist *head1,linklist *head2){ if(head1 == NULL) { return NULL; } if(head2 == NULL) { return NULL; }...

2018-04-07 10:28:26 174

原创 数据结构之单链表常见笔试题

头文件以及定义的节点都在上一篇的单链表功能实现里面有写逆序打印单链表递归方式简洁明了void linklist_reverseprintf(linklist *head){ if(head == NULL) { return;//空链表 } linklist_reverseprint(head->next); pr...

2018-04-07 00:17:50 511

原创 Linux进程(二上)环境变量和程序地址空间

环境变量基本概念 *环境变量一般是指在操作系统中用来制定操作系统运行环境的一些参数,如:我们在编写c/c++代码的时候,在连接的时候,我们从来不知道所连接的动态静态库在哪里,但是照样可以连接成功,生成可执行程序,原因就是有相关的环境变量帮助编译器进行查找 *环境变量通常具有某些特殊用途,在系统红通常具有全局特性常见的环境变量 PATH* :指定命令的搜索路径 HOME* :指定用户...

2018-04-01 20:30:39 382

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除