|
3
|
| Dave Forgac Eli Bendersky · 技术社区 · 17 年前 |
|
|
1
6
pexpect 这是我在“默认情况下”所能达到的,对于您这样的任何需求——还有其他类似的模块,但是pexpect几乎总是最丰富、最稳定、最成熟的模块。如果我也必须在Windows下正确运行(ping和traceroute可能会有自己的问题),那么我会费心寻找替代方案的一个例子是——让我们知道您的情况是否如此,然后我们会看到可以安排什么!-) |
|
|
2
4
您应该阅读 subprocess 模块中,它描述了如何运行外部进程并实时访问其输出。 基本上是这样的
实际上,你所联系到的问题中的答案与你需要的非常接近。
Corey Goldberg's answer
使用管道和
|
|
|
3
1
您可以为子进程创建一个tty对并在其中运行。根据C标准(C99 7.19.3),标准输出的唯一时间是线路缓冲(而不是你说你不想要的完全缓冲)是在它是终端的时候。(或者显然是名为setvbuf()的子级)。 查看os.openpty()。 未经测试的代码:
注意,让子进程(刚好在fork()之后)调用setvbuf()将 不 工作,因为setvbuf()是libc函数而不是syscall。它只是更改当前进程输出的状态,当加载新的二进制文件时,将在exec调用中覆盖该状态。 |
|
|
4
1
下面是另一种方法:
示例用法: 跟踪路由:
发出砰的声响:
顶部:
|