在 bash 脚本中从 python 运行需要伪终端的 os.popen 命令

在 bash 脚本中从 python 运行需要伪终端的 os.popen 命令

我有一个 python 脚本,它使用

size = os.popen('stty size', 'r').read().split()

获取终端窗口大小,以便我可以很好地打印文本。当我必须通过 bash 脚本运行这个 python 脚本时,我的问题就出现了。我有一个 bash 脚本,它rosrun在后台调用这个 python 脚本(使用 &),并且出现错误 -

stty: 'standard input': Inappropriate ioctl for device

环顾四周后,我明白这是因为stty需要一个终端(或伪终端),而我正在运行的 bash 脚本没有提供它。我无法使用,sudo因为ros命令无法使用 root 用户运行。

使用script -q -c命令也没有帮助。有什么方法可以解决这个问题,而不必将os.popenpython 脚本中的命令更改为替代命令?目前,我正在考虑在 os.popen 之前添加打印并expect在 bash 脚本中使用。

相关内容