专栏首页python3通过Python脚本理解系统进程间通信

通过Python脚本理解系统进程间通信

from socket import *  #导入socket包中的所有内容

from time import ctime #导入time包,同时在本地可使用ctime进行调用

import os,sys #导入os,sys包

HOST='localhost' #定义主机

PORT=21567 #定义端口

BUFSIZ=1024 #定义缓冲区

ADDR=(HOST,PORT) #定义元组

tcpSerSock=socket(AF_INET,SOCK_STREAM)  #生成socket

tcpSerSock.bind(ADDR) #将地址及端口元组与socket绑定

tcpSerSock.listen(5) #监听用户请求

r,w=os.pipe()  #定义管道,进程间通信就靠他了!

while True: #定义无限循环

    print "waiting ...."  #打印等待用户输入时的waiting

    try: #检测可能的异常

tcpCliSock,addr=tcpSerSock.accept() #处理用户请求

os.write(w,"f") #在管道一侧写入字符“f”

    except: #处理异常

sys.exit(0) #如果发生异常将直接退出

    if os.fork():  #在父进程中的处理

pass #跳过处理

    else: #在子进程中的处理

        print 'con from :',addr #打印客户端信息

        while True: #定义无限循环

            data=tcpCliSock.recv(BUFSIZ) #从客户端接收1024大小的数据

   os.write(w,data) #将数据写入到道道中

            if not data: #如果客户端没有任何输入,即直接回车或Ctrl+D

tcpSerSock.close() #关闭客户端链接

                break #跳出无限循环

            tcpCliSock.send('[%s] %s' %(ctime(),os.read(r,1024)))#否则回显用户信息并附加当前时间!

tcpSerSock.close() #这句话依然不会被执行。

通过这两个脚本大家能否对Apache的profork模式有一个更清晰的认识?

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • flask web开发环境搭建(Mac

    11月末和这个12月都在折腾flask,想的是能够用web框架去从后端写一个网站出来,当中学习积累的时间有点多,我又不怎么喜欢学到哪儿写到哪儿,所以就慢慢写好了...

    py3study
  • Python十讲 - 第二讲:变量和基础

    变量,是指把程序运行的中间结果临时的存在内存里,以便后续的代码调用,其值可以修改。

    py3study
  • 安装金碟K3客户端

    py3study
  • HTML‘冷’知识总结

    声明:本文为原创,作者为 对弈,转载时请保留本声明及附带文章链接:http://www.duiyi.xyz/c%e5%ae%9e%e7%8e%b0%e9%9b%...

    对弈
  • Netty之JavaBIO编程模型介绍

      最近打算再次整理下Netty的相关内容,但是要把Netty弄的比较清楚,我们首先需要对Java中的BIO,NIO及AIO要比较清楚,所以我们前面会花几篇文章...

    用户4919348
  • Java 单例模式

    Dean0731
  • 虚拟主机和云服务器怎么选?

    虚拟主机已经有了一段时间的历史,近几年随着其技术的不断成熟,以及其低廉的价格,成为众多站长的首选对象。但近两年云计算的出现,衍生出云服务器这个产物。这时,很多站...

    用户6429551
  • 损失函数的“噪音免疫力”

    如果一个损失函数,在有噪音的情况下,其风险最小化的模型(minimizer)跟没有噪音时是相同的,就称这个损失函数是抗噪的(noise-tolerant)。换言...

    beyondGuo
  • Xcode安装插件

    rectinajh
  • 单例模式以及七种实现方式

    通过两个判断,第一层是避免不必要的同步,第二层判断是否为null。 可能会出现DCL模式失效的情况。 DCL模式失效: singleton=new Single...

    用户6182664

扫码关注云+社区

领取腾讯云代金券