![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
影子尤利金
这个作者很懒,什么都没留下…
展开
-
Linux 多线程
一、进程与线程 典型的UNIX/Linux进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事 情。有了多个控制线程后,在程序设计师可以把进程设计成在同一时刻做不止一件事,每 个线程各自处理独立的任务。 进程是程序执行时的一个实例,是担当分配系统资源(CPU时间,内存等)的基本单 位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条 线程并行执行不同的任务。线程包含了表示进程内执行环境必须的信息,其中包括进程中 表示线程的线程ID,一组寄存器值,栈,e原创 2021-08-13 23:00:05 · 210 阅读 · 0 评论 -
Linux ipc之信号量的理解
信号量与已经介绍过的IPC结构不同,它不携带信息,作用在于管理。信号量用于实现进程间的互斥与同步,而不是用于存储进程间通信数据。信号量相当于一个钥匙,自己用钥匙开门进去后,其他人没有钥匙则进不去,必须等待自己出来才能取得钥匙进入,房间则是一个临界资源(如打印机等,需要有一个排队的过程)。信号量集:多个信号量P操作:拿钥匙V操作:放回钥匙原型:1.创建或获取一个信号量组:成功返回信号量集ID,失败返回-1 int semget(key_t key,int num_sems,int s原创 2021-08-13 16:32:57 · 175 阅读 · 0 评论 -
Linux 信号(signal)的理解
对Linux来说,信号时软中断,许多重要的程序都需要处理信号。信号为Linux提供了一种处理异步事件的方法。比如:终端用户输入ctrl+c来中断程序,会通过信号机制停止一个程序。信号概述:1.信号的名字和编号 每个信号都有一个名字和编号,这些名字都以"SIG"开头,例如"SIGIO","SIGCHLD"等 等。 信号定义在signal.h头文件中,信号名都定义为正整数。 具体的信号名称可以使用kill -l来查看信号的名字以及序号,信号时从1开始编号的, 不存在0号信号原创 2021-08-13 15:04:57 · 883 阅读 · 0 评论 -
Linux ipc 之共享内存的理解
共享内存。(对比前3种,比较先进,用的多)原理:A进程,B进程都有自己独立的存储空间在内存当中有一块公共的内存,这内存的地址对A来说可以挂的到,A可以把内存的地址拿到,B也可以拿到,A和B面向同一个物理空间。把A里面的指针指向共享内存,即可操作内存里的数据: int* p = 共享内存打印内容printf("%s",p); 或 B写入字符串 strcpy("p","hi");步骤:1.创建或打开共享内存-------shmget2.映射--------------------原创 2021-08-12 21:57:12 · 114 阅读 · 0 评论 -
Linux ipc 之消息队列的理解
消息队列。(前面两种管道通信的方式都是半双工的方式,作用有一些限制,只能一端读一端写,消息队列针对管道来说的话,功能会多一点,它可以互发)消息队列实现的原理:两个进程A,B运行在操作系统中,见下图消息队列是消息的链接表,存放在内核中。一个消息队列由一个标识符(即队列ID)来标识。特点:1.消息队列是面向记录的,其中的消息具有特定的格式以及特定的优先级。2.消息队列独立于发送与接收进程。进程终止时,消息队列及其内容并不会被删除。3.消息队列可以实现消息的随机查询,消息不一定要以先进先出原创 2021-08-12 18:30:08 · 159 阅读 · 0 评论 -
Linux ipc 之有名管道的理解
FIFO,也称为命名管道,它是一种文件类型。(可用 ls-l 查看)。特点1.FIFO可以在无关的进程之间交换数据,与无名管道不同。2.FIFO有路径名与之相关联,它以一种特殊设备文件形式存在于文件系统中。原型 #include <sys/stat.h> // 返回值:成功返回0,出错返回-1 int mkfifo(const char *pathname, mode_t mode);int main(){ if(mkfifo("./file",0600) <原创 2021-08-12 13:21:21 · 98 阅读 · 0 评论 -
Linux ipc 之无名管道的理解
无名管道,是UNIX系统中IPC最古老的形式。特点1.半双工(即数据只能在一个方向上流动)。具有固定的读端和写端。2.只能用于具有亲缘关系的进程之间的通信3.可以看成是一种特殊的文件,对于它的读写也可以使用普通的read,write等函数。但它不是普通的文件,并不属于其他任何文件系统,并且只存在于内存中。同一时间单向,管道里数据读走就没有了(和自来水管很像)原型: int pipe(int fd[2]); 创建一个无名管道,成功返回0,失败返回-1. 参数是整型数的数组原创 2021-08-12 12:34:09 · 153 阅读 · 0 评论 -
动态链表的头插和尾插
头插法// A code blockvar foo = 'bar';原创 2021-03-04 21:17:27 · 118 阅读 · 1 评论 -
C语言静态链表(指定节点的前后插入新节点与删除)
C语言静态链表(指定节点的前后插入新节点与删除)原创 2021-01-23 17:13:30 · 450 阅读 · 0 评论 -
C语言-指针简述
C指针简述小生结合谭老师的C程序设计和自己其他所学,对C语言指针略有一些掌握,不当之处,欢迎指正。1. 数据在内存中的存储和读取在程序中定义一个变量,在进行程序编译时,系统给这个变量分配内存单元。编译系统根据变量类型,分配相应字节。在Visual C++中,int型分配4个字节,float型分配4个字节,char型分配1个字节。每个字节都有自己对应的编号,可以叫做地址。通过地址可以找到对应的内存单元,地址指向变量单元。对变量的访问都是通过地址进行的。访问方式分为直接访问和间接访问,直接访问是通过变原创 2021-01-16 18:53:44 · 389 阅读 · 1 评论