进程间通信
文章平均质量分 89
进程间通信
我什么都布吉岛
Keep writing,Keep thinking!
展开
-
Linux内核态和用户态
操作系统的核心部分是一组对系统硬件及逆行控制的底层接口(设备驱动文件),访问设备或者文件的底层函数会出现用户态和核心态之间的切换,为了提高运行效率,我们应该减少对系统的调用。本文首先对用户需要减少系统调用的原因进行说明,然后对系统调用的API进行简单的介绍。 一、为什么系统调用应该尽量减少 为什么系统调用需要尽可能的减少调用? 系统调用会影响性能 硬件的读写限制 系统调用的时间比函数调用更加耗费时间。很多程序开始时运行于用户态,但在执行的过程中,一些操作需要在内核权限下才能执行,这就涉及到一个从用户态切原创 2021-08-09 22:36:30 · 412 阅读 · 0 评论 -
进程间通信(一)简介
简单的介绍了Linux系统进程间通信方式,进程之间的用户控件和内核空间是不同享的,所有才需要各种通信方式。原创 2019-09-11 15:55:37 · 203 阅读 · 0 评论 -
进程间通信(二)popen/pclose
一、什么是管道 管道是连接两个进程的介质,进程A数据通过管道流入进程B。对于Linux用户而言,对下面的语句都不会陌生: cmd1|cmd2 管道与缓冲区非常相似,cmd1的输出结果将会存放在管道中,管道再转发这个输出结果,对于cmd2而言,转发的内容为输入。 二、最简单的popen 两个程序之间传递数据最简单的方法就是使用popen、pclose。 #include <stdio.h> FILE * popen(const char * command, const char * open_原创 2021-08-07 13:34:29 · 614 阅读 · 0 评论 -
进程间通信(三)无名管道
管道是连接两个进程间的工具,如进程A数据通过管道流入进程B,B通过管道也可以流入进程A。 一、借助shell的管道 Linux系统下,经常会使用到这样一种管道: cmd1|cmd2 管道是一个暂存结果的一个空间,cmd1的标准输出或标准错误输出放进管道中,管道进行结果的转发,以标准输出的形式输出至下一个命令的cmd2标准输入。 一个比较简单的例子就是使用popen #include <st...原创 2019-09-16 14:25:59 · 294 阅读 · 0 评论 -
进程间通信(四)有名管道
有名管道解决了无名管道进程只能是具有情缘关系的问题。 一、有名管道 有名管道或者叫做命名管道(named pipe),他可以实现没有亲缘关系的进程间通信,方法是使用FIFO文件。 一般而言,Linux中的fifo文件存储在/tmp/my_fifo, shell中可以直接创建fifo: sudo mkfifo abc 然后进行读取和写入: cat < /tmp/abc & #让FIFO立刻打印收到的内容 echo "Hello world" > /tmp/abc #需要root权限,注原创 2021-08-10 21:40:32 · 689 阅读 · 0 评论