2010-07-09 160 views
14

我有一个从文件读取(使用file.read())的进程和一个正在写入同一文件(file.write())的进程。问题是它不起作用 - 我没有得到任何错误,但它们不能同时运行。我试过让读写操作无阻塞然后刷新流,如下:读取/写入同一文件的两个进程Python

fcntl.fcntl(file, fcntl.F_SETFL, os.O_NONBLOCK) 
file.write(msg) 
file.flush() 

我完全误解了吗?应该如何完成从不同进程中的一个文件的写入和读取?

回答

15

test1.py

import os 
f = open('txt.txt', 'a', os.O_NONBLOCK) 
while 1: 
     f.write('asd') 
     f.flush() 

test2.py

import os 
f = open('txt.txt', 'r', os.O_NONBLOCK) 
while 1: 
    print f.read(3) 

这工作对我很好。

+0

是的,这对我来说也很好,谢谢。 – Andreas 2010-07-09 09:41:34

+1

请注意,os.O_NONBLOCK在Windows下不可用。 – yoyo 2015-06-30 01:52:57

8

是否有使用通用文件的理​​由?使用sockets,进程间通信可能更容易。

+2

你当然得到了一个观点。我最初想到这样做,但改变了主意,并去了文件I/O,一旦我遇到问题,并开始与它搏斗,我有点到了我想解决它的地步:P。谢谢你的答案。 – Andreas 2010-07-09 09:40:26

相关问题