我尝试从子进程调用中使用 gnu 屏幕执行服务器守护程序,但它甚至没有启动
subprocess.call(["screen", "-dmS test ./server"])
有人告诉我,运行屏幕需要终端,因此我不能简单地通过调用来执行它。你能告诉我一些代码来做到这一点吗?
我尝试从子进程调用中使用 gnu 屏幕执行服务器守护程序,但它甚至没有启动
subprocess.call(["screen", "-dmS test ./server"])
有人告诉我,运行屏幕需要终端,因此我不能简单地通过调用来执行它。你能告诉我一些代码来做到这一点吗?
尝试
subprocess.call( ["screen", "-d", "-m", "-S", "test", "./server"] )
您需要将参数字符串分成单独的参数,每个字符串一个。
subprocess
这是文档中的相关引用:
在 UNIX 上,shell=False(默认):在这种情况下,Popen 类使用 os.execvp() 来执行子程序。args 通常应该是一个序列。字符串将被视为一个序列,该字符串作为唯一的项目(要执行的程序)。
在 UNIX 上,使用 shell=True:如果 args 是字符串,它指定要通过 shell 执行的命令字符串。如果 args 是一个序列,则第一项指定命令字符串,任何附加项都将被视为附加的 shell 参数。
因此,默认情况下,参数完全按照您提供的方式使用;它不会尝试将字符串解析为多个参数。如果您设置shell
为true
,您可以尝试以下操作:
subprocess.call("screen -dmS test ./server", shell=True)
并且字符串将像命令行一样被解析。