命令的后台执行

时间:2015-07-30 13:52:46

标签: python function sockets

我有从服务器到客户端的连接。 我从我的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.

1 个答案:

答案 0 :(得分:1)

您创建了一个新的标签页或窗口...下载应该自然在后台运行...不确定这是否是您提出问题的正确位置。