gpt4 book ai didi

linux - 有没有办法在进程终止后或进程终止前获取 proc/pid/status

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:19:49 27 4
gpt4 key购买 nike

我需要访问 proc/pid/status 并获取进程的 VmPeak。对于较长的进程,我可以使用另一个线程获取它,但对于小进程,我总是会收到错误消息(没有这样的进程)。有什么办法吗或我可以用来完成工作的解决方法。我正在使用 python 2.7,到目前为止我已经完成了以下操作。

import os
import subprocess
import threading
from shutil import copyfile
import time

rp = None
br = 0
pid = -1


class MemoryThread (threading.Thread):
def __init__(self):
threading.Thread.__init__(self)

def run(self):
global br, rp
while br == 0:
try:
pid = rp.pid
except Exception as e:
pid = -1
if not pid == -1:
try:
pp = open("/proc/" + str(pid) + "/status")
st = "X"
for l in pp.readlines():
if l.startswith("State:"):
st = l.split(":", 1)[1].strip().split(' ')[0]
if st == "R":
copyfile("/proc/" + str(pid) + "/status", "status.txt")
print "copied"
pp.close()

except Exception as ee:
print ee


th = MemoryThread()
th.start()
cmd = "/home/mursalin/Desktop/A"
cmd = cmd.split(" ")
path_stdout = "/home/mursalin/Desktop/stdout.txt"
path_stderr = "/home/mursalin/Desktop/stderr.txt"
path_stdin = "/home/mursalin/Desktop/inp.txt"
rp = subprocess.Popen(cmd, stdin=open(path_stdin, "r"), stdout=False, stderr=open(
path_stderr, "w"), shell=False, preexec_fn=False)
rp.communicate()
br = 1

最佳答案

您可能希望子进程处于僵尸状态,您可以在其中收集进程状态。但是subprocess.call会自动收集僵尸进程,防止子进程处于僵尸状态。

所以你应该使用像 os.spawnos.popen 这样的较低的 api 来解决这个问题。

关于linux - 有没有办法在进程终止后或进程终止前获取 proc/pid/status,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45065373/

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