gpt4 book ai didi

python - 我的 python 子进程是否破坏了什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:25:24 34 4
gpt4 key购买 nike

我正在学习 python 并使用 subprocess 模块。在阅读了几个不同的教程和关于如何使用该模块的描述之后,我的理解仍然不是非常扎实,所以我开始编写一些简单的代码来测试各种功能,看看一切是如何工作的。

我想看看如果我尝试使用以下代码多次启动同一个进程,它会如何表现:

import subprocess

def tpltest(x):
while x > 0:
try:
subprocess.Popen('wordgrinder')
except:
print 'something broke!'
x -= 1

x = raw_input('how many?')
tpltest(x)

当我在我的终端中运行它时,wordgrinder(终端文字处理器)正常打开,但随后光标以大约每秒一行的速度在屏幕上向下移动。它似乎只是运动,而不是任何字符被添加到屏幕上的空白文件中。我按下 ctrl+c 以查看在关闭第一个实例后是否还有 wordgrinder,并遇到了我的常规命令行提示,但光标继续滚动。我运行 top 并没有看到额外的 wordgrinder 实例打开,但光标继续滚动。

然后我发现了最奇怪的部分。如果我在窗口中向上滚动鼠标滚轮,窗口内容上会出现大块文本。有些 block 是我过去一周在控制台中输入的命令,有些是我在 python shell 中输入的命令,但不是常规终端,还有一些文本是我的 WiFi 安全信息,包括明文 WPA2我的网络密码。向下滚动鼠标滚轮没有任何效果,但向上滚动会用新文本覆盖几行,这些文本似乎来 self 系统中的其他随机位置。关闭终端窗口并打开一个新窗口后,一切恢复正常。

我正在使用 XFCE 运行 Debian 8 64 位并使用默认的终端仿真器。

我的代码做了什么,为什么?

最佳答案

我可以提供的解释是子进程所做的是运行一个后台进程。此外,wordgrinder 是一个程序,它通过从键盘 (stdin) 捕获输入并以非常特殊的方式控制命令行 (stdout) 来完全控制终端 session 。

当您通过脚本在后台运行 wordgrinder 时,它会导致一些奇怪的事情发生。您的 WiFi 密码最终会从您的实验中显示出来,这真是太疯狂了。

关于python - 我的 python 子进程是否破坏了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35945775/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com