linux fifo python,Python和FIFO

我试图在linux下使用Python来理解FIFO,我发现了一个我不理解的奇怪行为.

以下是fifoserver.py

import sys

import time

def readline(f):

s = f.readline()

while s == "":

time.sleep(0.0001)

s = f.readline()

return s

while True:

f = open(sys.argv[1],"r")

x = float(readline(f))

g = open(sys.argv[2],"w")

g.write(str(x**2) + "\n")

g.close()

f.close()

sys.stdout.write("Processed " + repr(x) + "\n")

这是fifoclient.py

import sys

import time

def readline(f):

s = f.readline()

while s == "":

time.sleep(0.0001)

s = f.readline()

return s

def req(x):

f = open("input","w")

f.write(str(x) + "\n")

f.flush()

g = open("output","r")

result = float(readline(g))

g.close()

f.close()

return result

for i in range(100000):

sys.stdout.write("%i,%s\n" % (i,i*i == req(i)))

我还使用mkfifo输入和mkfifo输出创建了两个FIFO.

我不明白为什么当我运行服务器(使用python fifoserver.py输入输出)和客户端(使用python fifoclient.py)来自两个控制台后,一些请求客户端崩溃与f上的“管道损坏”错误.flush().请注意,在崩溃之前,我已经看到从几百到几千个正确处理的请求运行正常.

我的代码有什么问题?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值