CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Linux/Unix社区 >  系统维护与使用区

怎样得到进程个数??

楼主wheat(麦子)2002-04-18 16:20:49 在 Linux/Unix社区 / 系统维护与使用区 提问

#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

相关问题

  • 怎样得到一个数据库中表的个数?
  • 辅助进程得到一个数据,怎么能传到主进程??
  • 用什么方法可以得到在当前进程中的线程个数?
  • 怎样得到指定目录下的文件的个数?
  • 怎样才能得到CString*的元素个数??
  • 怎样得到一个目录下文件的个数
  • 存储过程怎样得到一个数据集合
  • 请问怎样得到listbox中含有项的个数
  • 怎样得到一个页面里iframe的个数?
  • 怎样得到一个文档中的一个多值域的个数?

关键词

  • 文件
  • ps
  • 数字
  • 进程
  • wc
  • ksh
  • 方法
  • ef
  • 贼狼
  • grep

得分解答快速导航

  • 帖主:wheat
  • wiler
  • zhenshi
  • wake2000

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo