我编写了一个小的python脚本,它运行另一个python脚本并对其输出进行一些基本处理。然后它将此输出用作sublime-text插件的一部分。
它通过uisng subprocess.Popen
执行第二个python脚本(其源代码我无法控制)除一个问题外,它有效。第二个python脚本有一个包含以下代码的函数
try:
with open(os.ctermid(), "rb") as f:
height, width = struct.unpack("hh", ioctl(f.fileno(), TIOCGWINSZ, "1234"))
except (IOError, OSError, struct.error):
# return default size if actual size can't be determined
__warn_terminal_width_once()
return __default_terminal_width
return width
此异常始终在命令open(os.ctermid(), "rb")
上触发。
虽然我可以使用默认输出大小并过滤掉警告,但是能够以某种方式进行设置以便cterm()成功会更好。这可能吗?
编辑:如果我注释掉try块,则打印的异常是
File "/usr/lib/python2.7/dist-packages/catkin_tools/common.py", line 445, in terminal_width_linux
with open(os.ctermid(), "rb") as f:
IOError: [Errno 6] No such device or address: '/dev/tty'
此外,如果它帮助我的代码的完整源代码here,并且第61行发生了子进程调用