gpt4 book ai didi

twisted - 什么时候是获得 Twisted spawnProcess 创建的衍生进程的最终可执行文件的合适时机?

转载 作者:行者123 更新时间:2023-12-04 04:40:39 28 4
gpt4 key购买 nike

我正在尝试使用扭曲的 spawnProcess 启动一个进程,并使用 psutil 每 5 秒记录一次资源使用情况。首先,我尝试使用以下代码获取生成的进程的可执行文件名称:

#!/usr/bin/python
from twisted.internet import reactor
from twisted.internet import protocol
import psutil


class MyPP(protocol.ProcessProtocol):
def connectionMade(self):
print "connectionMade!"
process = psutil.Process(self.transport.pid)
print process.pid, process.exe
def outReceived(self, data):
print "out", data,
def errReceived(self, data):
print "error", data,
def processExited(self, reason):
print "processExited"
def processEnded(self, reason):
print "processEnded"
print "quitting"

pp = MyPP()

reactor.spawnProcess(pp, 'cat', ['cat'])

reactor.run()

我希望得到“xxxx/bin/cat”,但我得到了以下信息:
connectionMade!
31293 /usr/bin/python2.7

我用ps查了一下,pid是对的,但是executable是错的
ming.dai 31293  0.0  0.0   4328   356 pts/6    S+   10:30   0:00 cat

有人可以告诉我获取生成过程可执行文件的正确方法或正确时间吗?

非常感谢!

最佳答案

鉴于

  • psutilproc 读取进程信息
  • spawnProcess用途 os.execvp它将当前进程( python )替换为新进程(在本例中为 cat )
  • 并且您几乎立即请求流程信息

  • 似乎系统更新速度不够快 /proc/<pid>带有新进程信息的条目。

    您可以通过添加一个小的延迟来确认这一点:
        import time; time.sleep(.1)
    print process.pid, process.exe

    你会看到预期的输出 <pid> /bin/cat .

    如果您不需要立即执行该进程,它会按预期工作,否则您将需要添加一点延迟以给系统时间更新 /proc条目。

    关于twisted - 什么时候是获得 Twisted spawnProcess 创建的衍生进程的最终可执行文件的合适时机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18935604/

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