怎样得到进程个数??
#include <stdio.h>
#include <string.h>
main()
{
int i;
system("ps -ef|grep ksh|wc -l" > i);
printf("i=%d\r\n",i);
// 怎么把值传给 i,或别的方法实现
}
问题点数:100、回复次数:15Top
1 楼zhenshi(真世)回复于 2002-04-18 16:51:27 得分 0
i = system("ps -ef|wc -l");
printf("%d",i);
就行呀;为什么用"grep ksh"?Top
2 楼linuxnewer(夜猫子)回复于 2002-04-18 17:13:03 得分 0
他是在检查有几个ksh的进程Top
3 楼linuxnewer(夜猫子)回复于 2002-04-18 17:17:07 得分 0
想起来了,zhenshi你的方法不对,你得到的是
system运行后的返回值,而不是他输出到屏幕上的东西,
所以那个结果肯定是0。Top
4 楼hucool(鱼淼)回复于 2002-04-18 17:20:30 得分 0
psTop
5 楼wiler(@_@)回复于 2002-04-18 18:03:48 得分 60
#include <stdio.h>
#include <string.h>
main()
{
FILE *fp;
int i;
system("ps -ef|grep ksh|wc -l > aa");
fp=fopen("aa","r");
fscanf(fp,"%d",&i);
fclose(fp);
printf("i=%d\r\n",i);
}
不知是否可行?你试试Top
6 楼zhenshi(真世)回复于 2002-04-18 18:15:21 得分 0
我试了正常的很呀。Top
7 楼wheat(麦子)回复于 2002-04-18 19:07:59 得分 0
linuxnewer(夜猫子) 说的很对,谢谢你这么理解我的意思。system返回的是执行的结果
wiler(贼狼)你的方法是可以的,不用测试就可以看到。由衷的感谢你,我也想过这个方法,不过太繁琐了一些。
不知道大家有没有更简单的方法,thanks
Top
8 楼linuxnewer(夜猫子)回复于 2002-04-18 19:44:27 得分 0
贼狼的方法要生成一个临时文件,还要删掉,是麻烦些。
应该有更简单的办法。
等待……Top
9 楼zhenshi(真世)回复于 2002-04-18 20:06:46 得分 0
奇怪呀我的system()能反回正确的进程数呀。不过在下一行有个0。但是数字是对的。Top
10 楼snowvolcano(雪火山)回复于 2002-04-18 20:12:28 得分 0
我试了 wiler(贼狼) 的方法,但得到的结果竟是“i=2”,不符合常理。Top
11 楼zhenshi(真世)回复于 2002-04-18 23:54:35 得分 0
输出2很合理呀。他的不是总进程数知识含有“ksh”字符的行。
用ps -ef|wc -l才是总进程数呀。还有system的返回数的确和写到aa文件的数字一样,多次运行程序的数值不一样的Top
12 楼zhenshi(真世)回复于 2002-04-19 05:04:30 得分 10
概念性错误。脑子进水了。竟然忘了SYSTEM()还要执行。我也想知道有没有其他的方法。呵呵。Top
13 楼dgj(我是一匹狼)回复于 2002-04-19 09:55:30 得分 0
关注Top
14 楼wake2000(coucou)回复于 2002-04-19 13:19:58 得分 0
不知道/proc下的文件里有没有记载。Top
15 楼wake2000(coucou)回复于 2002-04-19 13:32:34 得分 30
知道了。/proc中以数字为目录名的就是进程,可以通过打开/proc目录,逐个读文件,如果atoi(文件名称)是大于零的,而且文件是目录属性的,将所有的文件加在一块就是进程数了
ls /proc | grep ^[0-9] | wc -l
ps -ef | wc -l
两个命令结果一样。Top




