![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux_process
llinux子分栏prosecc
车小猿
这个作者很懒,什么都没留下…
展开
-
无名管道与有名管道
一、无名管道1.无名管道函数图2. 管道文件是一个特殊文件,它由队列实现的。在文件IO中,创建、打开一个文件是由open函数实现,但是无名管道不能用open创建,对应的函数是pipe。创建:pipe(fd) //fd[0]是读端口,fd[1]是写端口读:read(f[0], readbuf, 128 ) //在管道读取128byte到readbuf内存中,实际读取字节数<=12...原创 2019-04-23 20:13:41 · 1356 阅读 · 0 评论 -
互斥锁与读写锁
1、互斥锁锁是一种很形象的说法:就像一个房间只能住一个人,任何人进去之后就把门锁上了,其他人都不可以进去,知道进去的人重新解锁,既是释放了这个锁资源为止。对于互斥锁的操作无非就是:定义互斥锁变量,初始化,加锁,解锁,销毁。互斥锁使用与一对一情况之下,任何情况下都是只有一条线程访问共享资源2、例子#include <pthread.h>#include <stdlib.h...原创 2019-05-21 15:28:12 · 2119 阅读 · 0 评论 -
条件变量
条件变量是一种逻辑稍微复杂一点的同步互斥机制,条件变量必须跟互斥锁一起配合使用。使用步骤:1、条件变量相关API函数注意:根其他的同步互斥机制一样,使用前要初始化,参数attr一般设置为NULL。当使用pthread_cond_destroy()销毁一个条件变量之后,他的值变得不确定,再使用必须重新初始化。注意:pthread_cond_broadcast()用来唤醒全部的等待线程,...原创 2019-05-22 10:25:48 · 131 阅读 · 0 评论 -
线程安全退出或取消
1、相关API函数原型注意:1、如果线程退出时没有返回值,则设置为NULL2、pthread_join()指定的进程如果还在运行,则将阻塞等待3、pthread_tryjoin_np()指定的线程还在运行,则立即返回出错返回2.例子:#include <stdlib.h>#include <stdio.h>#include <string.h...原创 2019-05-22 09:46:57 · 1299 阅读 · 0 评论 -
线程创建与属性设置
一、什么是线程1.进程:一个正在执行的程序,它是资源分配的最小单位。2.线程:轻量级进程,程序执行的最小单位,程序独立调度和分配CPU的基本单位,它是进程中的一个实体。一个进程中可以有多个线程,共享进程的所有资源,线程本身只包含一点必不可少的资源。3.并发:同一时刻只能有一条指令执行,但多个进程指令被快速切换,宏观上感觉多个进程同时执行的效果。并行:同一时刻多条指令在多个处理器上同时执行...原创 2019-05-17 19:56:57 · 403 阅读 · 0 评论 -
进程exec函数簇与wait/waitpid函数
1,被加载的文件的参数列表必须以自身名字为开始,以 NULL 为结尾。比如要加载执行当前目录下的一个叫做 a.out 的文件,需要一个参数”abcd”,那么正确的调用应该是:execl(“./a.out”, “a.out”, “abcd”, NULL);或者:const char *argv[3] = {“a.out”, “abcd”, NULL};execv(“./a.out”, a...原创 2019-04-21 23:03:11 · 295 阅读 · 0 评论 -
创建进程fork
1. 进程通信:1.1在用户空间是不能实现进程间通信的,只能通过Linux内核空间,创建对应的对象,实现进程间通信;对象不同,通信方式名字也就不一样。比如内核创建管道对象,对应的就是管道通信。1.2,子进程会从 fork( )返回值后的下一条逻辑语句开始运行。这样就避免了不断调用fork( )而产生无限子孙的悖论。1.3,父子进程是相互平等的:他们的执行次序是随机的,或者说他们是并发运行的...原创 2019-04-21 20:32:15 · 469 阅读 · 0 评论 -
进程信号
system-V IPC(Internet process communication) 系统版本5 进程间通信在终端输入kill -l可以看到Linux下所有进程的信号,如下图上面1-31号称为“非实时信号”又称“不可靠信号”,特点如下1、非实时信号不排队,信号的响应会相互嵌套2、如果目标进程没有及时响应非实时信号,那么随后到达的信号将被丢弃3、每一个非实时信号都是对应一个系统事件,...原创 2019-04-25 20:37:59 · 486 阅读 · 0 评论 -
POXIS信号量
一、有名信号量1、POSIX有名信号量有名信号量创建成功之后会在系统中的一个特殊的虚拟文件系统 /dev/shm,不同的进程间约好同一名,即可通过这种有名信号量来相互协调。还有有名信号量和system-V的信号量一样,进程退出不会自动消失,需要人手删除并释放资源使用步骤:1.1 使用sem_open()创建或者打开一个有名信号量1.2 使用sem_wait()和sem_post()来分别...原创 2019-05-21 17:13:26 · 476 阅读 · 0 评论 -
IPC之消息队列
1.消息队列的使用方法1.1发送者:A) 获取消息队列的 IDB) 将数据放入一个附带有标识的特殊的结构体,发送给消息队列。1.2接收者:A) 获取消息队列的 IDB) 将指定标识的消息读出。当发送者和接收者都不再使用消息队列时,及时删除它以释放系统资源。2.API函数2.1获取消息队列的 ID注意:2.1.1,选项 msgflg 是一个位屏蔽字,因此 IPC_CREAT、...原创 2019-04-28 20:19:52 · 648 阅读 · 0 评论 -
IPC之信号量
1,多个进程或线程有可能同时访问的资源(变量、链表、文件等等)称为共享资源,也叫临界资源(critical resources)。2,访问这些资源的代码称为临界代码,这些代码区域称为临界区(critical zone)。3,程序进入临界区之前必须要对资源进行申请,这个动作被称为 P 操作,P 操作就是申请资源,如果申请成功,资源数将会减少。4,程序离开临界区之后必须要释放相应的资源,这个动...原创 2019-04-28 18:35:42 · 906 阅读 · 0 评论 -
IPC之共享内存
1.使用共享内存一般步骤 :1.1获得共享内存对象的ID:shmget()1.2将共享内存映射至本进程虚拟内存空间的某个区域:shmat()1.3当不适用时,解除映射关系shmdt()1.4当所有进程都不用共享内存之时,删除共享内存shmctl()2. 共享内存的创建函数shmget注意:参数 key:IPC_PRIVATE 或 ftok的返回值,IPC_PRIVATE会生成相同...原创 2019-04-27 09:51:03 · 1189 阅读 · 0 评论 -
IPC之system-v IPC
system-V IPC(Internet process communication) 系统版本5 进程间通信1.ftok的 key可以保证用户空间的二个进程对同一个IPC对象进程操作。注意:如果连个参数一样,则返回的key值也一样第一个参数一般是取进程所在的目录,一般一个项目中需要通讯的几个进程通常都放在一个目录下如果同一目录下参过一个IPC对象,可以通过第二个参数来标识系统只有...原创 2019-04-26 19:58:11 · 288 阅读 · 0 评论