python之父子进程间通信
当进行fork的时候,父父进程的信息会复制到子进程,这本身已经是一种通信方式了,即子进程复制父进程资源,除此之外,还想让这两个进程进行通信,有什么方法呢?可以使用socketpair的方式。
我的疑惑是socketpair返回的描述符有没有服务端与客户端的区别?
# -*- coding:utf-8 -*- import socket import os import timeparent, child = socket.socketpair(socket.AF_UNIX, socket.SOCK_STREAM) # fork的一刹那父子是相同的 pid = os.fork()if pid:# in parent child.close()parent.sendall('hello, i am parent')response = parent.recv(1024)print "i am in parent ", os.getpid()print responsetime.sleep(0.1)parent.close()# print parent.fileno() else:# child process parent.close()print "i am in child ", os.getpid()child.sendall('hello, i am child')message = child.recv(1024)print messagetime.sleep(0.1)child.close()
一个基于udp的server,结合nc使用,可以构建一个简单的shell
# -*- coding:utf-8 -*- import socket import sys import commands import os# 最原始的基于udp协议的shell server_address = ('localhost', 8000)sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)sock.bind(server_address)while True:data, client = sock.recvfrom(1024)if "quit" not in data:if data.strip():# 假如这里的data是从web来的,那么这样我就实现了一个基于python的webshell,目前这个shell还不能处理交互式 sock.sendto(commands.getoutput(data.strip()) + os.linesep, client)else:pass else:break sys.exit()
python之父子进程间通信相关推荐
- Python中的进程间通信
Python中的进程间通信 文章目录 Python中的进程间通信 1 进程间通信 1.1 概念 1.2进程间通信方法 各种进程间通信 1. 基于信号量(Semaphore)的IPC 2 基于信号(Si ...
- Linux系统编程---5(共享存储映射,存储映射I/O,mmap函数,父子进程间通信,匿名映射)
共享存储映射 文件进程间通信 使用文件也可以完成 IPC,理论依据是,fork 后,父子进程共享文件描述符.也就共享打开的文件. 编程:父子进程共享打开的文件.借助文件进行进程间通信. 测试代码 /* ...
- mmap父子进程间通信
父子等有血缘关系的进程之间也可以通过mmap建立的映射区来完成数据通信.但相应的要在创建映射区的时候指定对应的标志位参数flags:MAP_PRIVATE:(私有映射)父子进程各自独占映射区:MAP_ ...
- Linux:进程间通信(创建匿名管道,父子进程间通信,兄弟进程间通信)
过一遍管道的基础知识: 1.本质:存在于高速缓存区,属于伪文件,不占用磁盘空间.缓冲区大小默认4K,可根据实际情况适当调整 2.读端和写端各自对应一个文件描述符,数据从写端流入,读端流出 3.操作管道 ...
- 使用管道完成父子进程间通信
什么是进程间通信 Linux环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间.任何一个进程的全局变量在另一个进程中都看不到,所以进程和进程之间不能相互访问,要交换数据必须 ...
- Python实现多进程间通信的方法总结
0 引言 众所周知,python因为GIL的存在,其多线程只能在一个CPU中调度,对于计算密集型任务完全不能充分利用多核资源,所以需要Python多进程编程.多进程程序最大的性能瓶颈往往出在进程间通信 ...
- Python开发基础--- 进程间通信、进程池、协程
进程间通信 进程彼此之间互相隔离,要实现进程间通信(IPC),multiprocessing模块支持两种形式:队列和管道,这两种方式都是使用消息传递的. 进程队列queue 不同于线程queue,进程 ...
- python程序间通信_python进程间通信Queue工作过程详解
Process之间有时需要通信,操作系统提供了很多机制来实现进程间的通信. 1. Queue的使用 可以使用multiprocessing模块的Queue实现多进程之间的数据传递,Queue本身是一个 ...
- python中父子进程
最近在使用python中的multiprocessing模块时遇到一些问题,很多人应该遇到相同问题,简单研究下,供有需要的参考. 首先,要明白multiprocessing的出现很大程度是为了解决py ...
最新文章
- bzoj 2436: [Noi2011]Noi嘉年华
- java string问题_Java关于String的问题?
- The Distinguish of the share or static lib in MFC
- 数据结构之自建算法库——链栈
- cesium进行模型高度测量的代码片段
- Rails Minitest style 指南
- 供应链 信用管理 大数据_智慧供应链大数据技术架构方案(ppt)
- idea设置类多行显示_IDEA 常用设置
- What is Dark Net
- detectron2注册数据集
- python自带的单元测试框架,最好的python单元测试框架
- 基于贝叶斯决策理论的分类方法
- STM32学习——直接存储器访问(DMA)
- Java给pdf添加页码(添加页眉页脚)
- 如何解决Css属性text-overflow:ellipsis 不起作用(文本溢出显示省略号)
- Deepin安装dotnet
- NTKO 文档控件问题总结
- Placing Lampposts
- 计算机视觉——棋盘格标定法获取相机内参外参
- 心脏骤停患者数据统计系统