Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1184603
  • 博文数量: 573
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 66
  • 用 户 组: 普通用户
  • 注册时间: 2016-06-28 16:21
文章分类

全部博文(573)

文章存档

2018年(3)

2016年(48)

2015年(522)

分类: LINUX

2015-12-02 15:17:07


点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <unistd.h>
  5. #include <fcntl.h>

  6. int check_process_num(const char * port, int* iCount);
  7. int CheckProcNum(char* ProcName, int* iCount);

  8. int main(int argc, char * * argv)
  9. {
  10.         
  11.         int iCount = 0;
  12.         int iRet = 0;
  13.         /*监测:同一个进程只允许启动1个*/
  14.         iRet = CheckProcNum(argv[0], &iCount);
  15.         printf("iCount=[%d]\n", iCount);
  16.         if ( iRet != 0 )
  17.         {
  18.                 printf("CheckProcNum error\n");
  19.                 return -1;
  20.         }
  21.         printf("11111111111111111111111111111111\n");
  22.         if(iCount >=2 )
  23.         {
  24.                 printf("[%s]进程已启动,不允许再启动!\n", argv[0]);
  25.                 return 0;
  26.         }
  27.         printf("22222222222222222222222222222222\n");
  28.         
  29.         while(1);
  30.         
  31.         return 0;
  32. }


  33. /*************************************************************
  34.  * 函 数 名:CheckProcNum()
  35.  * 功能描述:查询本进程已经启动的数量
  36.  * 输入参数:ProcName    -    进程名
  37.  * 输出参数:iCount    -    进程数
  38.  * 返 回:0 成功 ;-1 - 失败
  39.  * 说 明:
  40. **************************************************************/
  41. int CheckProcNum(char* ProcName,int* iCount)
  42. {
  43.         int        i = -1;
  44.         char    cmd[1024];
  45.         FILE *    fp = NULL;
  46.     
  47.         printf("aaaaaaaaaaaaaaaaaaaaaaaaaaaa\n");
  48.         memset(cmd, 0, sizeof(cmd));
  49.         sprintf(cmd,"%s%s%s", "ps -ef|grep -w ",ProcName,"|grep `whoami`|grep -v grep|wc");
  50.         fp = popen( cmd ,"r");
  51.         if(NULL == fp)
  52.         {
  53.             return -1;
  54.         }
  55.         fscanf(fp,"%d",&i);
  56.         *iCount = i;
  57.         printf("i=[%d]\n", i);
  58.         pclose(fp);
  59.         printf("bbbbbbbbbbbbbbbbbbbbbbbbbbbb\n");
  60.         return 0;
  61. }

  62. /***********************************************************
  63. * 函 数 名:check_process_num
  64. * 功能描述: 控制相同的进程是否容许启动多个
  65. * 输入参数:
  66. *            port:端口号
  67. * 输出参数:
  68. *            iCount:相同进程启动的个数
  69. * 返 回:
  70. * 流程描述:
  71. * 说明:
  72. * 修改记录:
  73. * [修改人] [日期] - [描述]
  74. ***********************************************************/
  75. int check_process_num(const char * port, int* iCount)
  76. {
  77.         int        i = -1;
  78.         char    cmd[1024];
  79.         FILE *    fp = NULL;
  80.         
  81.         memset(cmd, 0, sizeof(cmd));
  82.         sprintf(cmd,"%s%s%s", "ps -ef|grep qhsock|grep ", port, "|grep `whoami`|grep -v grep|wc");
  83.         fp = popen( cmd ,"r");
  84.         if(NULL == fp)
  85.         {
  86.             return -1;
  87.         }
  88.         fscanf(fp,"%d",&i);
  89.         *iCount = i;
  90.         pclose(fp);
  91.         return 0;
  92. }

阅读(625) | 评论(0) | 转发(0) |
0

上一篇:获取日期时间函数

下一篇:消息队列

给主人留下些什么吧!~~