Linux进程
文章平均质量分 50
puppet^K
这个作者很懒,什么都没留下…
展开
-
信号量编程简要实现
参考原文链接:https://blog.csdn.net/baidu_38621657/article/details/105724822信号量(semaphore)与已经介绍过的 IPC 结构不同,它是一个计数器。信号量用于实现进程间的互斥与同步,而不是用于存储进程间通信数据。1.特点1.信号量用于进程间同步,若要在进程间传递数据需要结合共享内存。2.信号量基于操作系统的 PV 操作,程序对信号量的操作都是原子操作。3每次对信号量的 PV 操作不仅限于对信号量值加 1 或减 1,而且可以加减任意原创 2021-10-22 15:55:53 · 426 阅读 · 0 评论 -
信号实现进程间发送接收数据
**信号实现进程间发送接收数据**原文链接:https://www.jianshu.com/p/f445bfeea40a原创 2021-10-22 08:38:00 · 109 阅读 · 0 评论 -
进程间通信——共享内存
参考原文链接1:进程间通信(IPC)介绍_tangtang_yue的博客-CSDN博客参考原文链接2:进程间通信——共享内存(Shared Memory)_ypt-CSDN博客_共享内存共享内存(Shared Memory),指两个或多个进程共享一个给定的存储区。1.特点 共享内存是最快的一种 IPC,因为进程是直接对内存进行存取。 因为多个进程可以同时操作,所以需要进行同步。 信号量+共享内存通常结合在一起使用,信号量用来同步对共享内存的访问。 2.相关API原创 2021-10-20 22:59:54 · 129 阅读 · 0 评论 -
消息队列通信相关API简述
原文链接:进程间通信(IPC)介绍_tangtang_yue的博客-CSDN博客_进程间通信(ipc)介绍消息队列,是消息的链接表,存放在内核中。一个消息队列由一个标识符(即队列ID)来标识。1.特点 消息队列是面向记录的,其中的消息具有特定的格式以及特定的优先级。 消息队列独立于发送与接收进程。进程终止时,消息队列及其内容并不会被删除。 消息队列可以实现消息的随机查询,消息不一定要以先进先出的次序读取,也可以按消息的类型读取。 2.相关API1 #include原创 2021-10-20 14:46:12 · 226 阅读 · 0 评论 -
管道通信原理简述
原文链接:进程间通信(IPC)介绍_tangtang_yue的博客-CSDN博客_进程间通信(ipc)介绍一.无名管道(pipe)1、特点: 它是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端。 它只能用于具有亲缘关系的进程之间的通信(也是父子进程或者兄弟进程之间)。 它可以看成是一种特殊的文件,对于它的读写也可以使用普通的read、write 等函数。但是它不是普通的文件,并不属于其他任何文件系统,并且只存在于内存中。 ...原创 2021-10-20 08:26:21 · 1054 阅读 · 0 评论 -
popen()函数简述
原文:https://blog.csdn.net/libinbin_1014/article/details/51490568相比于system函数,popen()函数可以获取运行的输出结果。popen()函数代码实现:#include <stdio.h>#include <stdlib.h>#include <unistd.h>//FILE *popen(const char *command, const char *type);//int p原创 2021-10-19 16:07:46 · 271 阅读 · 0 评论 -
system()函数功能简述
原文链接:linux system函数详解 - 南哥的天下 - 博客园system()函数的返回值如下: 成功,则返回进程的状态值; 当sh不能执行时,返回127; 失败返回-1;在前面写exec族函数文章中得代码示例中原创 2021-10-19 14:12:14 · 426 阅读 · 0 评论 -
linux进程---exec族函数(execl, execlp, execle, execv, execvp, execvpe)
exec族函数函数的作用:我们用fork函数创建新进程后,经常会在新进程中调用exec函数去执行另外一个程序。当进程调用exec函数时,该进程被完全替换为新程序。因为调用exec函数并不创建新进程,所以前后进程的ID并没有改变。在调用进程内部执行一个可执行文件。可执行文件既可以是二进制文件,也可以是任何Linux下可执行的脚本文件。1.execl()代码实现://文件execl.c#include <stdio.h>#include <stdlib.h>#in原创 2021-10-19 08:59:00 · 2264 阅读 · 0 评论 -
父进程等待子进程退出
1.为什么要等待子进程退出父进程等待子进程退出 并收集子进程的退出状态。子进程退出状态不被收集,变成僵死进程(僵尸进程)。2.相关函数(wait()、waitpid())区别: wait使调用者阻塞,waitpid有一个选项,可以使调用者不阻塞。wait()代码实现:#include <stdio.h>#include <sys/types.h>#include <unistd.h>#include <stdlib.h&...原创 2021-10-18 13:12:06 · 597 阅读 · 0 评论 -
关于进程地退出
一.正常退出1.Main函数调用return2.进程调用exit(),标准c库3.进程调用_exit()或者_Exit(),属于系统调用4.进程最后一个线程返回5.最后一个线程调用pthread_exit二.异常退出1.调用abort2.当进程收到某些信号时,如ctrl+C3.最后一个线程对取消(cancellation)请求做出响应三.总结...原创 2021-10-18 09:18:44 · 50 阅读 · 0 评论 -
vfork创建进程
1.fork()与vfork()的区别关键区别一: vfork 直接使用父进程存储空间,不拷贝。关键区别二: vfork保证子进程先运行,当子进程调用exit退出后,父进程才执行。2.代码实现#include <stdio.h>#include <sys/types.h>#include <unistd.h>#include <stdlib.h>int main (int argc, char *argv[]){原创 2021-10-18 08:45:46 · 100 阅读 · 0 评论 -
进程相关概念
1.程序与进程的概念以及它们之间的区别程序:程序是静态的概念,gcc xxx.c –o pro 磁盘中生成pro文件,叫做程序进程:进程是程序的一次运行活动, 通俗点意思是程序跑起来了,系统中就多了一个进程二者区别:进程相对程而言就是动态的,程序是进程的因,进程是程序的果2.如何查看系统中有哪些进程a.使用ps指令查看 实际工作中,配合grep来查找程序中是否存在某一个进程eg:b.使用top指令查看,类似windows任务管理器eg:3.进程标识符的概念进程标识..原创 2021-10-16 16:53:54 · 65 阅读 · 0 评论 -
关于通过创建共享内存实现进程间通信
大致思路步骤:1.共享内存创建或打开(使用shmget函数)2.映射(shmat函数)3.数据交换(strcpy函数等)4.释放共享内存空间(shmdt函数)5.干掉共享内存(shmctl函数)接着就开始写内容了,如下:sleep的意义在于,希望在另一个进程读完内容后再卸载干掉共享内存。创建进程读内容,如下:这里的shmget就不要创建了,所以后面最后一个参数写0即可。编译运行两个程序进程,结果如下:另外,还可通过ipcs -m查看系统存在的共享...原创 2021-09-14 16:35:34 · 87 阅读 · 0 评论 -
exec函数与fork函数的配合使用
1.实现功能当父进程检测到输入为1的时候,创建子进程把配置文件的字段值(LENG=1修改为LENG=6)修改掉。代码如下:将该修改配置文件通过gcc -o 编译生成可执行文件changeData,通过调用fork生成子进程,实现exec与fork的配合使用,具体代码如下:配置文件如下:2.运行结果可以看出通过fork函数产生子进程再调用exec函数来模拟处理客户端请求,父进程则继续等待下一个服务请求。从代码编译运行调试过程中,不难发现,父子进程是互不干扰的。...原创 2021-07-26 16:00:08 · 816 阅读 · 0 评论 -
关于fork()函数需要注意的地方
1.关于fork()的描述fork通过复制调用进程创建一个新进程,则这个新进程就叫做子进程,被调用的进程叫做父进程。子进程与父进程在不同的内存空间中运行。在调用fork()函数时,两个内存空间具有相同内容。其中一个进程执行的内存写、文件映射对另一个进程没有影响。2.关于fork()返回值当成功调用fork()时,在父进程中返回子进程的PID,且返回值为0.调用失败时,返回值为-1。如果没有创建新进程时,系统会返回一个非负整数。3.代码编程实例编译运行结果如下:...原创 2021-07-21 14:17:16 · 237 阅读 · 0 评论