我试图通过扭曲开始一个过程。我正在解析JSON文件,结构如下,其中包含多个命令:

{
"key"     : "test",
"cmd"     : "cat",
"args"    : "/opt/vinci/rxDaemons.json | grep cmd",
"restart" : 5,
"auto"    : 0
}


我正在尝试的命令非常简单;我正在文件中搜索“ cmd”一词(因为我确定您可以选择)

我用来生成该过程的代码如下:

cmd, args, uid, gid, env = self.processes[name]

proto = LoggingProtocol()
proto.service = self
proto.name = name
self.protocols[name] = proto
self.timeStarted[name] = self._reactor.seconds()
newArgs = str(cmd).split() + args.split()
self._reactor.spawnProcess(proto, str(cmd), args=newArgs, env=env, uid=uid, gid=gid )


响应为:

cat: |: No such file or directory
cat: grep: No such file or directory
cat: cmd: No such file or directory


然后整理整个文件

我假设我们在每个arg上都运行猫,但是我不知道为什么

如何在spawnProcess中正确使用多个arg?

最佳答案

问题是|不是cat的参数,而是part of bash。在POpen中,您可以将shell=True添加到命令中,但是在Twisted中似乎不可用。 “正确”的解决方案可能是在Twisted中而不是在bash中实现管道。

编辑:实际上在您的情况下,这是一个"useless use of cat",只需运行以下命令即可:

grep cmd /opt/vinci/rxDaemons

关于python - 如何在Twisted中使用多个参数生成spawnProcess?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15536875/

10-12 18:15