作为一个更大的应用程序的一部分,我正在尝试使用subprocess.call()用python创建一个“屏幕”。
创建带有参数的屏幕-d -m应该在后台创建它,而不是切换到它。如果我在命令行上运行screen -d -m -S test,它会按预期工作。
但是,如果我尝试以下python代码:
cmd=["screen", "-d", "-m", "-S", "test"]
call(cmd,shell=True)它会跳转到创建的屏幕。
call传递这些参数或运行命令的方式有什么不同吗?
发布于 2012-04-26 03:54:13
尝尝这个
cmd=["screen", "-d", "-m", "-S", "test", "bash"]
call(cmd)发布于 2012-04-26 04:49:03
适用于我(没有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.https://stackoverflow.com/questions/10322727
复制相似问题