这是一个在Ubuntu系统上完美运行的代码片段,但在OS X上调用setraw会使Python进程挂起。
import os, sys, termios, tty
# Open pseudo terminal
m,s = os.openpty()
stdin = os.fdopen(s, 'r', 0)
stdout = os.fdopen(s, 'w', 0)
# Remember olt attrs for restoration later on
tcattr = termios.tcgetattr(stdin.fileno())
# Set pseudo terminal in raw mode
tty.setraw(stdin.fileno())
# Write something on the slave side of the pseudo terminal
stdout.write('test\n')
# Call setraw again. (for no reason) But it hangs here...
tty.setraw(stdin.fileno())
此代码有问题,或者OS X的行为有何不同?它曾经在过去工作,但我们的代码中的一些细微变化使它现在在OS X中阻止......