关闭通过pty.openpty()创建的PseudoTTY

问题描述 投票:0回答:1

我正在使用pty.openpty()欺骗一个子进程,该子进程基于isatty()来改变其行为,模糊地是这样的:

import pty
import subprocess

master, slave = pty.openpty()
with subprocess.Popen(cmd, stdin=slave) as process:
    stdout, stderr = process.communicate()

但是,经过很多次(作为自动化测试的一部分),我得到:

E           OSError: [Errno 24] Too many open files

../../miniconda/envs/aclimatise-test/lib/python3.7/subprocess.py:1393: OSError

E       OSError: out of pty devices
../../miniconda/envs/aclimatise-test/lib/python3.7/pty.py:59: OSError

出于某种原因,pty模块文档没有告诉我如何或何时关闭我分配的pseudoTTY。我应该如何以及何时这样做?还是我完全以错误的方式使用pty

如果有帮助,我使用的是Python 3.6+,使用Linux(我认为这是使用此模块的要求。)>

我正在使用pty.openpty()欺骗一个基于isatty()更改其行为的子流程,模糊地是这样的:import pty import subprocess master,slave = pty.openpty()with subprocess.Popen(cmd,。 ..

python linux tty pty
1个回答
0
投票

您可以使用os.close关闭主从服务器。

© www.soinside.com 2019 - 2024. All rights reserved.