![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux进程
文章平均质量分 87
Linux进程的控制以及进程间通信等
R-QWERT
这个作者很懒,什么都没留下…
展开
-
Linux进程:如何在进程间加锁(实现互斥)
【Linux】初识进程间通信:建议先读完这篇。进程之间如何加锁,今天我们需要实现一个售票系统,我们需要对同一个num变量++。以往我们写过类似的代码,只需要用这把锁就可以实现一个进程内多个线程互斥。但是我们这里改变需求,假设是你和你的同学需要抢一张票,你们在不同的主机的相同进程抢票,那么要怎么做呢?mmap实际上我个人偏向于mmap的这种方式,因为当进程crash的时候,mmap可以保存到文件,但他和shm面临着共享内存被锁上无法使用的问题。转载 2023-05-03 22:12:41 · 1808 阅读 · 1 评论 -
Linux进程相关:为什么需要谨慎使用system函数
在君正Zeratul_T31_开发指南中明确规范,禁止在主程序中使用system 等系统调用接口函数,需要在另外的一个守护进程中去实现system函数的功能。转载 2023-03-04 21:03:12 · 1946 阅读 · 0 评论 -
Linux进程控制:fork与vfork的区别
fork()与vfock()都是创建一个进程,那他们有什么区别呢?总结有以下三点区别:1. fork ():子进程拷贝父进程的数据段,代码段vfork ( ):子进程与父进程共享数据段2. fork ()父子进程的执行次序不确定vfork 保证子进程先运行,在调用exec 或exit 之前与父进程数据是共享的,在它调用exec或exit 之后父进程才可能被调度运行。3. vfork ()保证子进程先运行,在她调用exec 或exit 之后父进程才可能被调度运行。如果在。转载 2023-03-04 22:44:45 · 378 阅读 · 0 评论 -
Linux进程间通信:dbus的使用(3)—— 整理关于D-Bus的一些学习笔记和补充
1、移植dbus到开发板的步骤Linux:交叉编译dbus/glib/dbus-glib - iamlinrm.CSDN先移植dbus-daemon后台进程所依赖的xml解析器:tar xjf expat-2.3.0.tar.bz2cd expat-2.3.0./configure --prefix=$PWD/tmp --host=arm-linux-gnueabihfmakemake installcp -rfd tmp/* ~/net/nfs_root/fs/usr/rm -rf原创 2021-04-19 18:31:01 · 5324 阅读 · 0 评论 -
Linux进程间通信:dbus的使用(2)—— D-Bus介绍及signal、method测试例程
本文整理自:D-Bus学习系列文章 - 恺风.CSDN总体介绍D-Bus的三个层面D-Bus是一个为应用程序间通信的消息总线系统, 用于进程之间的通信。它是个3层架构的IPC 系统,包括:函数库libdbus,用于两个应用程序互相联系和交互消息。一个基于libdbus构造的消息总线守护进程,可同时与多个应用程序相连,并能把来自一个应用程序的消息路由到0或者多个其他程序。基于特定应用程序框架的封装库或捆绑(wrapper libraries or bindings)。例如,libdbus-gli转载 2021-04-18 11:45:01 · 8130 阅读 · 1 评论 -
Linux进程间通信:dbus的使用(1)—— 交叉编译dbus/glib/dbus-glib
文章目录1、编译说明2、环境准备3、交叉编译dbus3.1 编译expat3.2 编译dbus4、交叉编译dbus-glib4.1 先编译glib4.1.1 libffi(版本需>=3.0)4.1.2 zlib4.1.3 glib4.2 编译dbus-glib5、可能会遇到的问题5.1 编译dbus出错5.2 编译glib出错5.3 编译dbus-glib出错6、编译自己编写的dbus-glib程序参考文章1、编译说明打开dbus官网,可以看到“What is D-Bus?”章节有以下说明:T原创 2021-03-10 08:50:19 · 5003 阅读 · 0 评论 -
Linux进程间通信:共享内存函数(shmget、shmat、shmdt、shmctl)及其范例
共享内存函数由shmget、shmat、shmdt、shmctl四个函数组成。下面的表格列出了这四个函数的函数原型及其具体说明。1. shmget函数原型 shmget(得到一个共享内存标识符或创建一个共享内存对象)所需头文件#include <sys/ipc.h>#include <sys/shm.h>函数说明得到一个共享内存标识符或创建一个共享内存对象并返回共享内存标识符函数原型int shmget(key_t key, size_t size, int sh转载 2021-08-14 14:43:26 · 2735 阅读 · 0 评论 -
Linux进程间通信:消息队列
首先说一下什么是消息队列。消息队列是进程间通信的一种,它是由操作系统维护的以字节序列为基本单位的间接通信机制,它提供了一个进程向另一个进程发送一个带类型的数据块的方法。 我们知道用管道来实现进程间通信的机制是两个进程利用管道文件来实现数据交流,那么消息队列与管道有什么区别呢? 首先看一下管道通信机制的模型: 然后消息队列通信模型: 从上面图中可看出两者有着本质的区别。那么两个进程怎么用消息队列进行通信呢? 首先介绍一个函数——ftok函数。 先给出函数原型:key_t ftok(cons转载 2021-08-13 22:50:23 · 416 阅读 · 0 评论 -
Linux进程间通信:socket套接字
最近写代码需要进程间socket通信,于是上网查了一些资料,自己动手写代码实现了一下,最后发现其实 socket 进程通信与网络通信使用的是统一套接口,只是地址结构与某些参数不同。第一种实现方案:使用 “127.0.0.1”客户端程序#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>转载 2021-06-22 18:01:15 · 309 阅读 · 0 评论 -
Linux进程间通信:pipe、fifo、mmap、信号
Linux进程间通信1、匿名管道:pipe2、命名管道:fifo3、内存映射:mmap4、信号 进程是程序运行资源分配的最小单位。每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC,Inter-Process Communication)。1、匿名管道:pipepipe只能用于有血缘关系的进程进行单向通信原创 2020-04-18 20:24:27 · 578 阅读 · 0 评论 -
Linux进程控制:wait获取子进程退出状态 WIFEXITED和WIFSIGNALED用法
可以使用wait函数传出参数status来保存进程的退出状态。 常用宏函数分为日如下几组: 1、 WIFEXITED(status) 若此值为非0 表明进程正常结束。 若上宏为真,此时可通过WEXITSTATUS(status)获取进程退出状态(exit时参数) 示例: if(WIFEXITED(status)){ printf("退出值为 %d\n", WEXITSTATUS(status));}2、 WIFSIGNALED(status)为非0 表明进程异常终止。 若上宏为转载 2021-08-24 16:58:24 · 1139 阅读 · 0 评论 -
Linux进程控制:fork、exec、wait/waitpid
fork函数fork函数比较特殊,“调用一次返回两次”,调用它可以创建出一个子进程。可以看下例子:#include <unistd.h>#include <stdio.h>#include <stdlib.h>int main(void){ pid_t pid; char *message; int n; pid = fork(); if...原创 2020-04-18 19:22:06 · 2194 阅读 · 0 评论