首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向psuedo shell发出命令(pty)

向psuedo shell发出命令(pty)
EN

Stack Overflow用户
提问于 2014-01-30 04:52:07
回答 1查看 2.4K关注 0票数 0

我尝试使用子进程popen,os.spawn来运行一个进程,但似乎需要一个伪终端。

代码语言:javascript
复制
import pty

(master, slave) = pty.openpty()

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

应该将"ls -l“发送给从tty...我尝试读取响应os.read(master,1024),但什么都没有。

编辑:

我还尝试创建pty,然后在子进程中打开调用--仍然不起作用。

代码语言:javascript
复制
import pty
import subprocess

(master, slave) = os.openpty()
p = subprocess.Popen("ls", close_fds=True, shell=slave, stdin=slave, stdout=slave)

类似的:

Send command and exit using python pty pseudo terminal process

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

EN

回答 1

Stack Overflow用户

发布于 2014-01-30 06:56:19

使用pty.spawn而不是os.spawn。下面是一个函数,它在单独的pty中运行命令,并将其输出作为字符串返回:

代码语言:javascript
复制
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"])
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21442360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档