1

我正在尝试通过扭曲开始一个过程。我正在解析一个 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

然后它会覆盖整个文件

我假设我们在每个参数上运行 cat 但我不知道为什么

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

4

1 回答 1

3

问题是这|不是 的论据cat,它是 的一部分bashPOpen您可以添加shell=True到命令中,但这似乎在 Twisted 中不可用。“正确”的解决方案可能是在 Twisted 中实现管道,而不是在 bash 中。

编辑:实际上在您的情况下,这是“无用的使用cat,只需运行此命令即可:

grep cmd /opt/vinci/rxDaemons
于 2013-03-20T23:48:11.267 回答