我尝试使用 subprocess、popen、os.spawn 来运行进程,但似乎需要伪终端。
import pty
(master, slave) = pty.openpty()
os.write(master, "ls -l")
应该发送“ls -l”到从属终端...我尝试读取响应 os.read(master, 1024),但没有任何可用的。
EDIT:
还尝试创建 pty,然后在子进程中打开调用 - 仍然不起作用。
import pty
import subprocess
(master, slave) = os.openpty()
p = subprocess.Popen("ls", close_fds=True, shell=slave, stdin=slave, stdout=slave)
Similar:
使用 python pty 伪终端进程发送命令并退出 https://stackoverflow.com/questions/8710829/send-command-and-exit-using-python-pty-pseudo-terminal-process
*nix 伪终端如何工作?什么是主/从通道? https://stackoverflow.com/questions/476354/how-do-nix-pseudo-terminals-work-whats-the-master-slave-channel