Python os.forkpty 为什么不能正常工作

2 投票
1 回答
3393 浏览
提问于 2025-04-15 11:35

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,不知道该怎么解决。比如,有人可能在使用某个特定的功能时,发现它没有按照预期工作,或者出现了错误信息。这种情况下,通常我们会去查找相关的资料,看看有没有人遇到过类似的问题,或者有没有解决方案。

在这个过程中,StackOverflow是一个非常有用的资源。它是一个程序员社区,大家可以在这里提问和回答问题。很多时候,我们可以找到别人已经解决过的类似问题,这样就能节省很多时间和精力。

总之,遇到问题时,不要慌张,先查查资料,看看有没有人遇到过相同的情况,或者在社区里寻求帮助,这样通常能找到解决办法。

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 个回答

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)

撰写回答