加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

[并发编程] 进程间通信

发布时间:2020-12-14 00:11:24 所属栏目:Linux 来源:网络整理
导读:1.进程间通信方式 套接字、信号、匿名管道、命名管道、等等 2.管道 管道是Linux由Unix那里继承过来的进程间的通信机制,它是Unix早期的一个重要通信机制。 其思想是,在内存中创建一个共享文件,从而使通信双方利用这个共享文件来传递信息。 由于这种方式具

1.进程间通信方式

套接字、信号、匿名管道、命名管道、等等

2.管道

管道是Linux由Unix那里继承过来的进程间的通信机制,它是Unix早期的一个重要通信机制。

其思想是,在内存中创建一个共享文件,从而使通信双方利用这个共享文件来传递信息。

由于这种方式具有单向传递数据的特点,所以这个作为传递消息的共享文件就叫做“管道”。

?

3.匿名管道

概览

由父进程创建的子进程将会赋值父进程包括文件在内的一些资源。如果父进程创建子进程之前创建了一个文件,那么这个文件的描述符就会被父进程在随后所创建的子进程所共享。

也就是说,父、子进程可以通过这个文件进行通信。

如果通信的双方一方只能进行读操作,而另一方只能进行写操作,那么这个文件就是一个只能单方向传送消息的管道。如下图所示:

基本操作

‘‘‘
1.子进程通过os.write -> 管道 -> 父进程
2.父进程os.read()会等待子进程在管道上发送数据(阻塞)
‘‘‘
import os,sys,time
def child(pw):
    time.sleep(5)
    msg=child processing
    os.write(pw,msg.encode())       #将msg写入文件描述符pw
def parent():
    r,w = os.pipe()
    if os.fork() == 0:
        #child processing
        child(w)
    else:
        msg = os.read(r,32)         #主线程监听管道,每次有数据则继续执行
        print(msg)
parent()

4.命名管道

...

?

?

参考:

https://blog.csdn.net/qq_38410730/article/details/81569852

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读