gpt4 book ai didi

process - 扭曲的使用过程

转载 作者:行者123 更新时间:2023-12-02 15:26:36 24 4
gpt4 key购买 nike

我正在学习使用twisted(最新的12.3.0版本),作为为移动应用程序进行一些简单的服务器端处理的方法。

我的第一个任务本质上是在日志文件上运行“tail”命令并将经过后处理的找到的行传递到移动应用程序。这应该很容易...

现在,在 TwistedMatrix 站点的文档中,有一个“使用进程”页面,我在其中获得了以下代码:

<小时/>
from twisted.internet import protocol, utils, reactor
from twisted.python import failure
from cStringIO import StringIO

class CommandRunner(protocol.Protocol):

#command = "ls /"
command = "tail -n 100 /var/log/system.log"

def connectionMade(self):
output = utils.getProcessOutput(self.command)
output.addCallbacks(self.writeResponse, self.noResponse)

def writeResponse(self, resp):
self.transport.write(resp)
self.transport.loseConnection()

def noResponse(self, err):

print err
self.transport.write("Houston, we have an error!\n")
self.transport.loseConnection()


if __name__ == '__main__':
f = protocol.Factory()
f.protocol = CommandRunner
reactor.listenTCP(10999, f)
reactor.run()

它与“Doing it the Easy Way”下发布的代码片段 99.9% 相同。唯一的变化是twisted 应该执行的shell 命令(在我的Mac 上我似乎没有fortune 命令)。

启动示例代码后,当我尝试使用 telnet 从第二个终端连接 10999 端口时,出现此错误:

[Failure instance: Traceback (failure with no frames): : got stderr: 'Upon execvpe tail -n 100 /var/log/system.log [\'tail -n 100 /var/log/system.log\'] in environment id 4315532016\n:Traceback (most recent call last):\n File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Twisted-12.3.0-py2.7-macosx-10.6-intel.egg/twisted/internet/process.py", line 420, in _fork\n executable, args, environment)\n File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Twisted-12.3.0-py2.7-macosx-10.6-intel.egg/twisted/internet/process.py", line 466, in _execChild\n os.execvpe(executable, args, environment)\n File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.py", line 353, in execvpe\n _execvpe(file, args, env)\n File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.py", line 368, in _execvpe\n func(file, *argrest)\nOSError: [Errno 2] No such file or directory\n']

我没有看到任何明显的原因说明为什么代码应该在文件中显示 [Errno 2] No such file or directory\n'] 错误..

蒂亚

最佳答案

您要运行的程序是“tail”。您想向其传递几个参数:“-n”、“100”和“/var/log/system.log”。

相反,您的代码所做的是运行程序“tail -n 100/var/log/system.log”,该程序可能在您的系统上不存在(我不希望它存在)。

正确使用getProcessOutput是将程序与参数列表分开传递:

getProcessOutput("tail", ["-n", "100", "/var/log/system.log"])

关于process - 扭曲的使用过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15139331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com