成都网站建设设计

将想法与焦点和您一起共享

怎么让Linux进程在固定堆运行

本篇内容主要讲解“怎么让Linux进程在固定堆运行”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么让Linux进程在固定堆运行”吧!

创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:做网站、成都做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的武城网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

我们知道程序在每次运行的时候地址都是不一样的,linux之所以有这样的设计也许是为了安全性考虑,不利于黑客的攻击。

我们看一个简单的程序:

#include 
#include 

int main(int argc, char* argv[])
{
    int first = 0;
    int *p = malloc(1024);
    printf("p=%p\n", p);

    return 0;
}
怎么让Linux进程在固定堆运行

显然程序每次运行的地址都不一样!

那么有没有办法让相同程序每次运行的地址都一样呢?

看到这里你也许会问为什么让程序每次运行的地址都一样,这不违背OS设计的初衷了吗?是的,这的确违背 linux 内核设计的初衷。但是实际项目中难免不会遇到奇葩的需求,比如有些app由于历史的原因需要运行在指定地址上,那这时候就需要把地址空间随机化关掉。再比如遇到随机地址crash问题也可以用这种方法debug。

废话少说,我们看下地址空间随机化关掉的方法。

echo 0> /proc/sys/kernel/randomize_va_space
or
sudo sysctl -w kernel.randomize_va_space=0

关掉后我们看下该程序的测试结果:

怎么让Linux进程在固定堆运行

到此,相信大家对“怎么让Linux进程在固定堆运行”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


本文标题:怎么让Linux进程在固定堆运行
URL网址:http://chengdu.cdxwcx.cn/article/jshpdg.html