亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法從外部進程讀取 PTY(偽終端文件)

無法從外部進程讀取 PTY(偽終端文件)

RISEBY 2021-08-17 18:38:38
我正在打開一個 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 源代碼中找到這樣的東西,但我沒有找到任何我可以使用的東西。理想情況下,我的制作人會使其易于打開和閱讀(就像在我的消費者示例中一樣),但是如果我能看到這項工作,我愿意修改任何一端......
查看完整描述

2 回答

  • 2 回答
  • 0 關注
  • 248 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號