Linux C 进程 + 进程间通信
通过一些demo 了解进程 + 进程间通信
Super小白&
奋斗的小白
展开
-
LinuxC 进程间通信 --- 信号量
有四个进程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD。信号量其实是OS创建的一个共享变量,进程在进行操作之前,会先检查这个变量的值,这变量的值就是一个标记,通过这个标记就可以知道可不可以操作,以实现互斥。1、进程调用semget函数创建新的信号量集合,或者获取已有的信号量集合。3、调用semop函数,对集合中的信号量进行pv操作(加锁解锁)有多少个进程需要同步,我们在集合中就需要创建对应数量的信号量。4、调用semctl删除信号量集合。原创 2023-08-05 17:01:53 · 162 阅读 · 0 评论 -
LinuxC 进程间通信 --- 共享内存
让同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看到进程B对共享内存中数据的更新;2、直接使用地址来读写缓存时,效率会更高,适用于大数据量的通信。2、进程调用shmat函数,将物理内存映射到自己的进程空间。1、进程调用shmget函数创建新的或获取已有共享内存。4、调用shmctl函数释放开辟的那片物理内存空间。3、shmdt函数,取消映射。1、减少进入内核空间的次数。原创 2023-08-05 15:27:41 · 145 阅读 · 0 评论 -
LinuxC 进程间通信 --- 消息队列
消息队列的本质就是由内核创建的用于存放消息的链表,由于是存放消息的,所以我们就把这个链表称为消息队列。2、多进程网状交叉通信时,消息队列是上上之选。3、能实现大规模数据的通信。1、传送有格式的消息流。原创 2023-08-05 10:42:17 · 342 阅读 · 1 评论 -
LinuxC 进程间通信 --- 管道
这样,即使与FIFO的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够彼此通过FIFO相互通信(能够访问该路径的进程以及FIFO的创建进程之间),因此,通过FIFO不相关的进程也能交换数据。1、写管道时,如果管道的读端被close了话,向管道“写”数据的进程会被内核发送一个SIGPIPE信号, 发这个信号的目的就是想通知你,管道所有的“读”都被关闭了。1、为了保证管道一定被创建,最好是两个进程都包含创建管道的代码,谁先运行就谁先创建,后运行的发现管道已经创建好了,那就直接open打开使用。原创 2023-08-04 20:31:35 · 56 阅读 · 0 评论 -
LinuxC 进程间通信 --- 信号
2、设置SIGIO信号由哪个进程接收。信号 -- 实现异步IO操作。1、设置信号的处理函数。3、设置可以异步读取。原创 2023-08-04 17:28:51 · 38 阅读 · 0 评论 -
LinuxC 进程
用两个进程实现一个读鼠标一个读键盘demo。原创 2023-08-04 15:38:22 · 34 阅读 · 0 评论