cceczjxy的专栏
登录
注册
空间
博客
好友
相册
留言
cceczjxy的空间
cceczjxy
烟台市
共
356
次访问,排名
915
好友
21
人,关注者
51
人
asdf
注册时间:2007-4-5
登录时间:2008-6-29
[加为好友]
[即时聊天]
[发私信]
cceczjxy的个人资料
所在行业:
计算机软件
社区头衔:
社区专家
个人专长:
c
,
linux
,
嵌入式
,
数据库也下过一番功夫。
专家分:
目前总共有12684分
Linux/Unix社区:10125分 C/C++:2459分 扩充话题:48分
博客:
目前总共有0条评论
访问量:16
排名:20000名之外
文章数:1条
cceczjxy的好友
wynlc
baobao2010
TracyLing
hefuhua
geqingluck
youqika
chocoboeve
yzy541
sxf327189557
Promi
java_lovely
zmsong
sky51
woaimubo
hq_king
查看全部好友的状态
/
共21好友
cceczjxy最新动态
07月
04
cceczjxy 回复了帖子
目前最稳定最快的操作系统是什么?
21:25
07月
01
cceczjxy 下载了资源
Setup Factory 7.0 制作教程
10:25
cceczjxy 评论了资源
基于ARM蓝牙传输源程序
09:24
06月
30
cceczjxy 上传了资源
拒绝服务攻击对策及网络追踪的研究
22:36
cceczjxy 下载了资源
蓝牙 core1.1核心协议
22:32
cceczjxy 评论了资源
蓝牙 core1.1核心协议
22:28
cceczjxy 下载了资源
蓝牙core2.1协议
22:26
cceczjxy 评论了资源
linux系统下的关于蓝牙模块的源代码
22:23
cceczjxy 下载了资源
linux系统下的关于蓝牙模块的源代码
22:22
cceczjxy 评论了资源
蓝牙基础教程
22:14
cceczjxy 上传了资源
基于 AR M L i n ux的图像采集与蓝牙传输.pdf
22:08
cceczjxy 下载了资源
蓝牙黑客2.1版
21:54
cceczjxy 评论了资源
蓝牙API函数以及流程
17:43
cceczjxy 下载了资源
蓝牙API函数以及流程
17:42
cceczjxy 下载了资源
蓝牙基础教程
17:37
cceczjxy 回复了帖子
请问Redhat下进程数目是多少
12:04
06月
28
cceczjxy 回复了帖子
升星散分
14:49
cceczjxy的留言
zlai_2001
发表于:2008-05-08
感谢你回复我的问题:紧急求助:关于循环中的定时器问题
while(1)
{
n=recvfrom(...);
if(n <0)
{
printf("error");
exit(1);
}
alarm(1);
}
你把alarm(1)放在recvfrom前边,并且你需要在if(n <0)内加判断,用来区别recvfrome是因为信号退出的。
alarm设置的信号是一次有效,你其它怎么设置的呀?
这样的需求,一般用setitimer来设置时钟信号。
不过不能将alarm(1)放在recvfrom前面,因为要在收到数据包后开始计时,放在前面就不能完成这个功能了。。
请帮帮忙吧,我实在是不知道该怎样实现这样的功能。。
capa
发表于:2007-12-17
非常感谢cceczjxy给我的留言,我好像有点明白了.
在我这边的情况中,所有操作都是用root运行的,所以可能不是原因1.
应该是原因2,不过还是有些问题.例如:1.dlopen使用mmap把.so的内容映射到内存,这时对.so文件的改动应该不会影响进程空间,否则也不会把.so文件删除了,进程还可以运行.所以,直接覆盖.so文件(我使用的是cp命令)只是仅仅影响了文件中数据,而不关系到进程.2.我试验过,即使是用一个完全相同的.so文件覆盖(cp命令),也会产生段错误,这是不是说明
文件中的数据是否改变,和进程空间无关?.3.是不是mmap就是如下这么实现的:你把一个文件映射到进程空间后,你删除,ok,没问题,但是你不能write(cp命令实际上就是使用了write系统调用)这个文件,无论你写什么,否则就有段错误.
以上只是我的一点点理解,还希望cceczjxy多多指点
capa
发表于:2007-12-12
我使用dlopen/dlsym打开一个.so文件,并调用其中的函数.
由于.so文件中的函数定义发生了变化,需要在不重新启动进程的情况下更新.so文件
我发现如果直接将新的.so文件覆盖旧的.so文件,程序就发生段错误
如果先删除旧的.so文件, 再将新.so文件复制过来,就可以运行
不知怎么回事? 望各位老大指点, 多谢!
Slackware, 内核2.4, gcc2.95
回复于 2007-12-13
1,有可能是文件的权限的原因,直接覆盖文件,会保留被覆盖文件的各种权限,删除再拷贝会用新文件的权限. 2,dlopen/dlsym是用的mmap把.so的内容映射到内存中了,并关闭打开的文件,是通过文件的inode来读取实际的内容的,你直接覆盖文件时,文件的inode节点会保留,只是指向的实际内容改变了,这时,再通过映射到内存的指针读时,就会出错的. 删除文件再复制,就不存在那样的问题. 不过,如果.so文件内,对象的位置在替换前后发生变化,也可能出错.
luohonglove
发表于:2007-08-24
大虾谢谢你帮我解决问题,我是一个刚刚走入软件行业的人,很想和你交个朋友!
我的msn是:lois_lh@hotmail.com,如果赏脸就请加了吧!
回复于 2007-08-25
抱歉,我不能用msn,只能用邮箱,偶尔可以用用qq, 有事情可以发邮件: cceczjxy@yahoo.com.cn
给cceczjxy的留言