2024-10-06 12:44:53 发布
网友
PMU_PIPE_MAP = {} PIPE= 'tmp/%s.pipe' % hostname if not os.path.exists(PIPE): os.mkfifo(PIPE) PMU_PIPE_MAP[hostname] = os.open(PIPE, os.O_WRONLY)
我正试图打开n管道。为了跟踪它们,我想以某种方式存储它们—就像在字典中—我认为上面的代码应该可以工作,但是在执行过程中它会冻结。有什么建议吗?在
n
但这确实有效:
它没有经过测试,但愿它对你有帮助
import os, tempfile tmpdir = tempfile.mkdtemp() PMU_FIFO_MAP = {} def openFIFO(pname): filename = os.path.join(tmpdir, '%s' % pname) fifo = None try: os.mkfifo(filename) fifo = os.open(PIPE, os.O_WRONLY) except OSError, e: print "Failed to create FIFO: %s" % e print e.printStackTrace() return fifo def closeFIFO(fname, fifo): fifo.close() os.remove(fname) for hostname in hostnames: fifo = openFIFO(hostname) if fifo: PMU_FIFO_MAP[hostname] = fifo # do stuff with fifos for fname, fifo in PMU_FIFO_MAP.items(): closeFIFO(fname, fifo) del PMU_FIFO_MAP[hostname] os.rmdir(tmpdir)
另请参阅可能的Create a temporary FIFO (named pipe) in Python?。在
啊哈!显然,在管道的另一端必须有一个读数,然后我们才能从管道中返回。所以我问的问题是不正确的,因为我没有用同样的方式测试这两个场景。所以我的问题是如何理解管道的工作原理。在这种情况下,一旦管道在“read”端打开,字典条目将成功,但在此之前将阻塞。 how to determine if pipe can be written
它没有经过测试,但愿它对你有帮助
另请参阅可能的Create a temporary FIFO (named pipe) in Python?。在
啊哈!显然,在管道的另一端必须有一个读数,然后我们才能从管道中返回。所以我问的问题是不正确的,因为我没有用同样的方式测试这两个场景。所以我的问题是如何理解管道的工作原理。在这种情况下,一旦管道在“read”端打开,字典条目将成功,但在此之前将阻塞。 how to determine if pipe can be written
相关问题 更多 >
编程相关推荐