免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: iknowabc
打印 上一主题 下一主题

[函数] 根据进程名,怎么调用系统函数来获取该进程的内存量? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2003-08-13 16:55 |只看该作者

根据进程名,怎么调用系统函数来获取该进程的内存量?

to yuxq :
高手!谢谢你的指教。我再试试。
再问一个很简单的问题,比如PROC_PID_LEN ,怎么知道
它定义在哪个头文件中?必须要grep吗?
有没有什么简单文档chm之类的可以查询。

论坛徽章:
0
12 [报告]
发表于 2003-08-13 17:01 |只看该作者

根据进程名,怎么调用系统函数来获取该进程的内存量?

PROC_PID_LEN 是自己定义的一个宏,#define PROC_PID_LEN 5,其实查询头文件在哪还是用grep 的比较多,对c开发平台的头文件一般在/usr/include 和/usr/include/sys下,grep 一下就可以了,还可以通过man -k 函数名,一般里边也有出自的头文件。

论坛徽章:
0
13 [报告]
发表于 2003-08-13 17:03 |只看该作者

根据进程名,怎么调用系统函数来获取该进程的内存量?

主要用的是man ,也可以用netscape看一些帮助

论坛徽章:
0
14 [报告]
发表于 2003-08-13 21:05 |只看该作者

根据进程名,怎么调用系统函数来获取该进程的内存量?

to yuxq:
有个问题:
dir = opendir("/proc";
while(1) {
struct dirent *dir_content = readdir(dir);
if(dir_content == NULL) break;
char procfilename[1024];
sprintf(procfilename,"/proc/%s/psinfo",dir_content->;d_name);
printf("Now searching... %s\n",procfilename);
..}
程序显示Now searching... /proc/./psinfo
就停下来了,不知道是怎么回事?
对了,readdir,每读一次就会自动移动指针吗?也就是说反复读,每次读出的文件不一样吗?读到NULL就表示结束。那么怎么区分返回的是文件还是子目录?
感觉这里好像只读了一个文件就退出了while(1)循环。
还需请教您,谢谢!

论坛徽章:
0
15 [报告]
发表于 2003-08-14 08:29 |只看该作者

根据进程名,怎么调用系统函数来获取该进程的内存量?

通过自己调试后能够增加自己对编程的启发,你可以在即怀疑的地方printf一下,看看实在什么地方退出的,具体的函数的使用你还是自己看一下man帮助,这对你水平的提高大有好处,要想编好程序,必须学会看在线帮助。

论坛徽章:
0
16 [报告]
发表于 2003-08-14 09:51 |只看该作者

根据进程名,怎么调用系统函数来获取该进程的内存量?

其实应该将else return(1),改成else continue;或者将else去掉,其实思路是这样,具体编程还是你自己来吧

论坛徽章:
0
17 [报告]
发表于 2003-08-14 10:16 |只看该作者

根据进程名,怎么调用系统函数来获取该进程的内存量?

谢谢你。
昨天晚上急于想写出一个小例子,所以没有怎么查资料就上来问了,呵呵,不好意思,让你费心了。
不过,如果我怎么都弄不出来,我还是要问问的呀!^_^
继续尝试ing......

论坛徽章:
0
18 [报告]
发表于 2003-08-14 10:19 |只看该作者

根据进程名,怎么调用系统函数来获取该进程的内存量?

大家互相学习

论坛徽章:
0
19 [报告]
发表于 2003-08-20 17:18 |只看该作者

根据进程名,怎么调用系统函数来获取该进程的内存量?

不好意思,还要请教斑竹:
CPU/MEM好像用下面这个结构,但是含义我不是太懂
ushort_t pr_pctcpu;        /* % of recent cpu time used by all lwps */
ushort_t pr_pctmem;/* % of system memory used by process */
我找了个例子程序是这样用的
printf("CPU Usage:%f\n",psinfo.pr_pctcpu * 100.0 / (float) 0x8000);
printf("Mem Usage:%f\n",psinfo.pr_pctmem * 100.0 / (float) 0x8000);
这里不知道为什么要/(float)0x8000。
呵呵,我以为pr_pctmem已经是百分比了,为什么还要除这个float。
查了很多资料也没有结果,还是决定来请教斑竹。

谢谢。

论坛徽章:
0
20 [报告]
发表于 2003-08-20 17:38 |只看该作者

根据进程名,怎么调用系统函数来获取该进程的内存量?

你的例子所完成的功能是什么,是不是有什么特殊的功能,说实话,还真不知道/2^15的原因!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP