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

次に、ファイル全体をキャットします

それぞれの引数で猫を実行していると思いますが、理由はわかりません

spawnProcessで複数の引数を適切に使用するにはどうすればよいですか?

4

1 に答える 1

3

問題は、それ|がの引数ではなく、cat一部であるbashということです。でコマンドにPOpen追加できshell=Trueますが、Twistedでは使用できないようです。「正しい」解決策は、おそらくbashではなくTwistedで配管を実装することです。

編集:実際には、これは「無駄な使用catです。代わりに次のコマンドを実行してください。

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