向psuedo shell(pty)发出命令

2024-09-27 07:35:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着用这个子程序,操作系统生成使进程运行,但似乎需要一个伪终端。在

import pty

(master, slave) = pty.openpty()

os.write(master, "ls -l")

应该把“ls-l”发送给从机tty。。。我试着看一下回应操作系统读取(master,1024),但什么也没有。在

编辑:

还试图创建pty,然后在子进程中打开调用——仍然没有成功。在

^{pr2}$

类似:

Send command and exit using python pty pseudo terminal process

How do *nix pseudo-terminals work ? What's the master/slave channel?


Tags: importmaster终端编辑进程oslsslave
1条回答
网友
1楼 · 发布于 2024-09-27 07:35:30

使用pty.spawn代替os.spawn。下面是一个在单独的pty中运行命令并以字符串形式返回其输出的函数:

import os
import pty

def inpty(argv):
  output = []
  def reader(fd):
    c = os.read(fd, 1024)
    while c:
      output.append(c)
      c = os.read(fd, 1024)

  pty.spawn(argv, master_read=reader)
  return ''.join(output)

print "Command output: " + inpty(["ls", "-l"])

相关问题 更多 >

    热门问题