我有一個進程(agxp)接收數據並將它們寫入一個文件,另一個進程將數據發送到另一個進程。如何讓一個進程被阻塞,直到另一個進程將一行寫入文件?
當agxp啓動時,它應該立即產生一些輸出。我希望主進程阻塞,直到它看到文件中agxp的輸出的第一行。
我正在檢查第一行是否已通過比較文件的統計信息寫入文件,但它們始終是相同的。所以我被困在while循環中。爲什麼會發生?
rvListen_AGX = "tibrvlisten -service " + agxService + " -network " + agxNetwork + " -daemon " + domain
agxf = open(self.AGX_logFileName, 'w')
agxstat = os.stat(self.AGX_logFileName)
agxp = subprocess.Popen(rvListen_AGX.split(), stdout = agxf, bufsize=0)
while os.stat(self.AGX_logFileName) == agxstat:
print agxstat
print os.stat(self.AGX_logFileName)
stxf.flush()
sleep(0.1)
您可以在主進程中設置'stdout = PIPE'並寫入'agxf'。 – jfs 2014-10-28 17:25:51