Python os.forkpty为什么我不能让它工作

时间:2009-05-14 18:03:16

标签: python pty

import pty
import os
import sys
import time

pid, fd = os.forkpty()

if pid == 0:
    # Slave
    os.execlp("su","su","MYUSERNAME","-c","id")

# Master
print os.read(fd, 1000)
os.write(fd,"MYPASSWORD\n")
time.sleep(1)
print os.read(fd, 1000)
os.waitpid(pid,0)
print "Why have I not seen any output from id?"

1 个答案:

答案 0 :(得分:5)

你睡得太久了。你最好的选择是尽快开始阅读一个字节。

#!/usr/bin/env python

import os
import sys

pid, fd = os.forkpty()

if pid == 0:
    # child
    os.execlp("ssh","ssh","hostname","uname")
else:
    # parent
    print os.read(fd, 1000)
    os.write(fd,"password\n")

    c = os.read(fd, 1)
    while c:
        c = os.read(fd, 1)
        sys.stdout.write(c)