我有从服务器到客户端的连接。 我从我的PC(在这种情况下是服务器)与另一台PC(在这种情况下是客户端)进行交互。让我们说我从客户端下载文件,程序正在等待下载结束。有没有办法,当我的电脑仍然下载,处理其他命令或产生一个新的shell,让我运行一些命令,客户端将执行而不打开新的连接?
代码:
def Exec(cmde):
# check if command exists
if cmde:
execproc = subprocess.Popen(cmde, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
cmdoutput = execproc.stdout.read() + execproc.stderr.read()
return cmdoutput
# otherwise, return
else:
return "Enter a command.\n"
我使用上面的代码来执行命令,但是这个命令让我可以与shell进行交互。要执行其他自定义命令(如下载文件,无论......),我定义了一个类似上面的函数。让 down 和 up 成为让我下载文件的功能,所以上传文件:
def Down(socket, file):
...
def Up(socket, file):
...
我想制作一个让我在背景中执行命令或其他任务的功能。当我运行 Down 时:
[*]Downloading file...
[*]Wait a while...
[*]Download finished
所以我喜欢的是:
[command2exec]: BackgroundDownload filename.file
[*]: Downloading in background filename.file
[command2exec]: ls (for example)
[output]:
...
[command2exec]:
...
[!]: filename.file's download finished.
答案 0 :(得分:1)
您创建了一个新的标签页或窗口...下载应该自然在后台运行...不确定这是否是您提出问题的正确位置。