| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 913 人关注过本帖
标题:[求助]关于共享内存的监控
取消只看楼主 加入收藏
zzjking
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2007-7-16
收藏
 问题点数:0 回复次数:3 
[求助]关于共享内存的监控

在监控程序中可以随时查看共享内存的信息~
#include <iostream>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdlib.h>
main()
{
while(1)
{
int i = 0;
int shm_id;
key_t key;
char* shm;
char* name = "/dev/shm/myshm1";
key = ftok(name,0);
if(key == -1)
{
//perror("ftok error");
}
shm_id = shmget(key,1000,IPC_CREAT);
if(shm_id == -1)
{
perror("shmget error");
return 0;
}
shm = (char*)shmat(shm_id,NULL,0);

if(strlen(shm)!=0)
{
std::cout<< shm << std::endl;

while(i<1000)
{
*(shm+i)='\0';
i++;
}
}
}
}

但是问题也来了~,如果总是while(1)来循环的话~会占用资源的~一旦用户数量多的话~就会崩溃了~
请问,用什么办法来控制,做到有消息就运行,没消息就sleep,请具体说明,谢谢了~



搜索更多相关主题的帖子: 内存 
2007-10-30 14:53
zzjking
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2007-7-16
收藏
得分:0 
看到网上下载的监控软件~有消息时~占用CPU资源,没消息时占0%,可是不明白人家是通过啥唤醒自己的程序的进程的~

总不能把唤醒写到自己的服务器端把~一脑袋雾水了~求救~!

2007-10-30 16:41
zzjking
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2007-7-16
收藏
得分:0 
没人写过关于监控进程的程序吗?
system v里有消息队列~共享内存的知识~关键是现在不能把SLEEP和即时监控问题还没想明白~
而且,SEVER端的程序应该不为监控程序提供帮助才对(通过服务器程序来唤醒),有明白的高人请指点下把~谢谢~

2007-11-01 09:05
zzjking
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2007-7-16
收藏
得分:0 

感谢您的回复~
问题是这样解决的.

SYSTEM V里的共享内存可能会造成数据丢失,我们已经改为消息队列了(message queque)了,也是用while(1)循环监控
和共享内存的区别在于,共享内存是一直去看共享那部分内存里存放的数据,而消息队列中的msgrcv()是阻塞形式的~如果没人msgsnd()传递消息的话~就会一直等待~这样就不会占用CUP了~HOHO~


2007-11-02 09:01
快速回复:[求助]关于共享内存的监控
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035687 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved