当进行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之父子进程间通信相关推荐

  1. Python中的进程间通信

    Python中的进程间通信 文章目录 Python中的进程间通信 1 进程间通信 1.1 概念 1.2进程间通信方法 各种进程间通信 1. 基于信号量(Semaphore)的IPC 2 基于信号(Si ...

  2. Linux系统编程---5(共享存储映射,存储映射I/O,mmap函数,父子进程间通信,匿名映射)

    共享存储映射 文件进程间通信 使用文件也可以完成 IPC,理论依据是,fork 后,父子进程共享文件描述符.也就共享打开的文件. 编程:父子进程共享打开的文件.借助文件进行进程间通信. 测试代码 /* ...

  3. mmap父子进程间通信

    父子等有血缘关系的进程之间也可以通过mmap建立的映射区来完成数据通信.但相应的要在创建映射区的时候指定对应的标志位参数flags:MAP_PRIVATE:(私有映射)父子进程各自独占映射区:MAP_ ...

  4. Linux:进程间通信(创建匿名管道,父子进程间通信,兄弟进程间通信)

    过一遍管道的基础知识: 1.本质:存在于高速缓存区,属于伪文件,不占用磁盘空间.缓冲区大小默认4K,可根据实际情况适当调整 2.读端和写端各自对应一个文件描述符,数据从写端流入,读端流出 3.操作管道 ...

  5. 使用管道完成父子进程间通信

    什么是进程间通信         Linux环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间.任何一个进程的全局变量在另一个进程中都看不到,所以进程和进程之间不能相互访问,要交换数据必须 ...

  6. Python实现多进程间通信的方法总结

    0 引言 众所周知,python因为GIL的存在,其多线程只能在一个CPU中调度,对于计算密集型任务完全不能充分利用多核资源,所以需要Python多进程编程.多进程程序最大的性能瓶颈往往出在进程间通信 ...

  7. Python开发基础--- 进程间通信、进程池、协程

    进程间通信 进程彼此之间互相隔离,要实现进程间通信(IPC),multiprocessing模块支持两种形式:队列和管道,这两种方式都是使用消息传递的. 进程队列queue 不同于线程queue,进程 ...

  8. python程序间通信_python进程间通信Queue工作过程详解

    Process之间有时需要通信,操作系统提供了很多机制来实现进程间的通信. 1. Queue的使用 可以使用multiprocessing模块的Queue实现多进程之间的数据传递,Queue本身是一个 ...

  9. python中父子进程

    最近在使用python中的multiprocessing模块时遇到一些问题,很多人应该遇到相同问题,简单研究下,供有需要的参考. 首先,要明白multiprocessing的出现很大程度是为了解决py ...

最新文章

  1. bzoj 2436: [Noi2011]Noi嘉年华
  2. java string问题_Java关于String的问题?
  3. The Distinguish of the share or static lib in MFC
  4. 数据结构之自建算法库——链栈
  5. cesium进行模型高度测量的代码片段
  6. Rails Minitest style 指南
  7. 供应链 信用管理 大数据_智慧供应链大数据技术架构方案(ppt)
  8. idea设置类多行显示_IDEA 常用设置
  9. What is Dark Net
  10. detectron2注册数据集
  11. python自带的单元测试框架,最好的python单元测试框架
  12. 基于贝叶斯决策理论的分类方法
  13. STM32学习——直接存储器访问(DMA)
  14. Java给pdf添加页码(添加页眉页脚)
  15. 如何解决Css属性text-overflow:ellipsis 不起作用(文本溢出显示省略号)
  16. Deepin安装dotnet
  17. NTKO 文档控件问题总结
  18. Placing Lampposts
  19. 计算机视觉——棋盘格标定法获取相机内参外参
  20. 心脏骤停患者数据统计系统

热门文章

  1. 《剑指Offer》 合并两个排序的链表
  2. C++——如何理解.h文件和.cpp文件
  3. 【今日CV 计算机视觉论文速览 第115期】Fri, 10 May 2019
  4. Spring—使用类加载从配置文件中读取配置
  5. 【C++ STL学习之六】STL算法之for_each
  6. 抽象类与抽象方法 c# 1613720553
  7. 草稿 爬虫-访问登陆可见的页面-请求时带上cookie数据
  8. django-模型类管理器
  9. python-hashlib模块-加密
  10. 输入网址后到网页显示出来会发生什么?