python 伪终端使用, 与/bin/bash子进程交互

 1 # encoding: utf-8
 2 
 3 import os
 4 import sys
 5 import time
 6 
 7 
 8 def child(master, slave):
 9     os.close(master)
10     os.dup2(slave, 0)
11     os.dup2(slave, 1)
12     os.dup2(slave, 2)
13     os.execvp("/bin/bash", ["bash", "-l", "-i"])
14 
15 
16 def parent():
17     master, slave = os.openpty()
18     new_pid = os.fork()
19     if new_pid == 0:
20         child(master, slave)
21 
22     time.sleep(1)
23     os.close(slave)
24 
25     os.write(master, "fg\n")
26     time.sleep(1)
27     _ = os.read(master, 1024)
28 
29 
30     os.write(master, sys.argv[1] + "\n")
31     time.sleep(1)
32     lines = []
33     while True:
34         tmp = os.read(master, 1024)
35         lines.append(tmp)
36         if len(tmp) < 1024:
37             break
38     output = "".join(lines)
39     output = "\n".join(output.splitlines()[1:])
40     print output
41 
42 parent()

 

转载于:https://www.cnblogs.com/taotaowill/p/5458242.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值