我正在打開一個 PTY(在 Python/Linux 中)并寫入它。我可以通過minicom完美讀取它。但是,我無法在另一個 Python(或 C++)程序中讀取它。這是一個最小化的例子:producer.py(打開 pty / 寫入):import os, sysfrom time import sleepmaster_fd, slave_fd = os.openpty()print "minicom -D %s" % os.ttyname( slave_fd )for i in range(0,30): d = str(i % 10) os.write( master_fd, d ) sys.stdout.write( d ) sys.stdout.flush() sleep( 2 )os.close( slave_fd )os.close( master_fd )print "\nDone" consumer.py(嘗試打開/讀?。篿mport os, sysfrom time import sleeppts=raw_input("Enter pts number:")while True: fd=0 try: fd=os.open('/dev/pts/%d' % (pts,), os.O_RDONLY | os.O_NONBLOCK ) sys.stdout.write( os.read(fd, 1 ) ) sys.stdout.flush() except Exception as e: print e if fd: os.close(fd) sleep(1) 讀取的結果總是:[Errno 11] 資源暫時不可用如果我以阻塞模式閱讀,它只會阻塞直到生產者終止。然后,它說該文件不存在。我花了幾天時間擺弄嘗試設置各種模式、權限、鎖定等,但似乎沒有任何幫助。這種事情很容易與常規文件一起使用。另外,再次注意minicom 可以毫無障礙地讀取 pty。此外,使用lsof我可以看到 minicom 和我的 consumer.py 腳本確實打開了文件 - 這只是在 python 示例中不起作用的讀取。那么minicom的秘密是什么?我試圖在 minicom 源代碼中找到這樣的東西,但我沒有找到任何我可以使用的東西。理想情況下,我的制作人會使其易于打開和閱讀(就像在我的消費者示例中一樣),但是如果我能看到這項工作,我愿意修改任何一端......
添加回答
舉報
0/150
提交
取消