C语言 如何写指定程序内存

C语言 如何写指定程序内存,第1张

1首先要打开这个进程

2然后就可以进行读写

打开进程用:HANDLE

hProcessOpenProcess(PROCESS_ALL_ACCESS,

FALSE,

PID);

写:

WriteProcessMemory

(hProcess,

写入哪里,

写入的内容的地址,

大小,

实际大小);

还有一个叫ReadProcessMemory

参数差不多

限制一个进程运行内存大小,我不知道如何查看。但记得Linux(32位)中每个进程独享4GB的进程空间,需要注意的是这4G指的是虚拟内存,而非物理内存。可以查阅一下Linux虚拟内存机制相关资料。

要定制的话难度大啊!内核文件里用进程描述符(thread_info)表示一个进程,它是一个结构体,里面有个关于进程内存分配的字段(addr_limit)。具体自己研究研究吧!

如果只是对某个进程分配空间的话就简单多了。假如你要为当前进程设置2M的内存上限,可以通过current->addr_limit=2048实现。

下面的shell脚本可以实时的监控系统中各个进程的CPU和内存的占用情况,用于限制进程CPU占用 率更加合理。

#!/bin/sh

PIDS=`top -bn 1 | grep "^ [1-9]" | awk ’{ if($9 > 50 || $10 > 25 && id -u $2 > 500) print $1}’`

for PID in $PIDS

do

        renice +10 $PID

        echo "renice +10 $PID"

done

能够将这个脚本放到cron中运行,比如每分钟检查一次,只需以root身份添加crontab项:

#crontab -e

limitsh

    以后每个一分钟就会检查一次,调整占用50%以上CPU或25%内存的进程的nice值,从而使这样的进程优先级变低,被调度的机会减少,同时会向root发邮件提示该进程被调整过。

    但是,限制内存使用最好还是用PAM,RedHat能够在/etc/security/limitsconf中配置。

以上就是关于C语言 如何写指定程序内存全部的内容,包括:C语言 如何写指定程序内存、在linux怎么限制一个进程运行内存大小、如何限制linux所有进程可使用的总内存等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10119682.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存