代码段是进程中最重要的一个段。该段是由CPU执行的指令部分,通常又称为正文段。
正文段通常是只读的,用于防止程序无意识的修改,造成程序出错。
示例:试图修改正文段出错
#include <stdio.h>
int f(int a,int b)
{
return a+b;
}
int main()
{
int (*p)(int ,int);
void *q;
p=f;
q=(void*)p;
printf("the code is :0x%x",*((int *)q));
*((int *)q)=0x12345678;
return 0;
}
$./motify
the code is :0x16e9
segmentation fault
由此可知:Linux环境下的正文段是受操作系统写保护的。
一个程序在多数情况下是不需要更改自己代码的,只有一种情况例外,就是一些长时间运行的升级程序。(??)