0

作为更大应用程序的一部分,我正在尝试使用 python 创建一个“屏幕” subprocess.call()

使用参数创建屏幕-d -m应该在后台创建它而不是切换到它。如果我screen -d -m -S test在命令行上运行,它会按预期工作。

但是,如果我尝试以下 python 代码:

cmd=["screen", "-d", "-m", "-S", "test"]
call(cmd,shell=True)

它跳转到创建的屏幕。

call 传递这些参数或运行命令的方式有什么不同吗?

4

2 回答 2

0

为我工作(没有shell=True)。

也就是说,使用以下脚本:

#!/usr/bin/env python
from subprocess import *
cmd=['screen', '-d', '-m', '-S', 'test']
call(cmd)

调用正确启动后台屏幕进程:

$ screen -ls
No Sockets found in /var/run/screen/S-cduffy.

$ ./screen-startup-test 
$ screen -ls
There is a screen on:
        12161.test      (04/25/2012 03:47:32 PM)        (Detached)
1 Socket in /var/run/screen/S-cduffy.
于 2012-04-25T20:49:02.920 回答
0

尝试这个

cmd=["screen", "-d", "-m", "-S", "test", "bash"]
call(cmd)
于 2012-04-25T19:54:12.780 回答