Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1685485
  • 博文数量: 511
  • 博客积分: 967
  • 博客等级: 准尉
  • 技术积分: 2560
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-06 14:19
文章分类

全部博文(511)

文章存档

2016年(11)

2015年(61)

2014年(257)

2013年(63)

2012年(119)

分类: LINUX

2014-03-21 22:37:03

linux同一个进程下面的线程都是在同一个进程空间的,那么是否会存在越界访问的问题呢?
刚刚做了一个试验,答案是:存在越界问题。

[root@FC5 thread]# gcc -o hk hookpthread.c -lpthread;./hk;cat hookpthread.c
&a:[b7f77464]-----a:[20]
&b:[b7576464]
hook-->&a:[20]
&a:[b7f77464]-----a:[30]
#include
#include
void * fun(void * i)
{
int a=20;
printf("&a:[%x]-----a:[%d]\n", &a,a);
sleep(1);
printf("&a:[%x]-----a:[%d]\n", &a,a);
pthread_exit(NULL);

}

void * hook(void * a)
{
int b=10;
printf("&b:[%x]\n", &b);
printf("hook-->&a:[%d]\n", *(&b+2622464));
*(&b+2622464)=30;
pthread_exit(NULL);

}
int main()
{
pthread_t pidfun,pidhook;
pthread_create(&pidfun, NULL, fun, NULL);
pthread_create(&pidhook, NULL, hook, NULL);
sleep(2);
return 0;
}


阅读(804) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~