• 7348阅读
  • 6回复

求一个“判断linux下进程是否启动的程序” [复制链接]

上一主题 下一主题
 
只看楼主 倒序阅读 楼主  发表于: 2009-07-15
  如题,请高手指点
离线taomic

只看该作者 1楼 发表于: 2009-07-16
描述非常不清.你说的是SHELL?
这与QT无关
只看该作者 2楼 发表于: 2009-07-18
  就是linux下开启了一些进程,要用qt编个程序来检验这些进程是否是一直开启的状态,如果没有开启,要找到对应的路径来启动它,好像是要建立线程来做,因为我是刚学qt,所以不太会,请楼上指点啊
离线taomic

只看该作者 3楼 发表于: 2009-07-20
这个的实现纯粹是用Linux编程来做,与QT 无关
实现方法: 使用守护进程

//********************************************
//创建守护进程
//监视目标进程是否结束,是则无条件重启目标程序
//********************************************
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<fcntl.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/wait.h>
#define MAXFILE 0xffff

int main()
{
  pid_t pc;
  int i;
  
  signal(SIGCHLD,SIG_IGN);//防止出现僵尸

  pc = fork();            //新建一个子进程
  if(pc < 0)              //处理
    {
      printf("error fork\n");
      exit(1);
      }
   else if(pc > 0)
      exit(0);

   setsid();              //创建一个新的会话期
   chdir("/");            //改变当前目录为根目录
   umask(0);              //重设文件权限掩码
   for(i = 0;i < MAXFILE;i ++)
      close(i);           //关闭文件描述符
   while(1)               //开始守护进程
     {
       if(fork() == 0)    //新建子进程
         {
           if(execl("/usr/bin/mybin","mybin",(char *)0) < 0)  //在这里指定被守护的文件目录及文件名
              perror("execl error!");
           }
       sleep(2);
   }
}
只看该作者 4楼 发表于: 2009-07-21
     谢谢楼上,但我们老大要我用qt来写,希望通过比较进程名来确定指定的进程在不在。我现在不知道ps命令的源代码是什么?不知道如何枚举linux下当前的进程
离线rivita
只看该作者 5楼 发表于: 2009-08-05
ps > aaa.txt
然后 解析aaa.txt
离线speaker424
只看该作者 6楼 发表于: 2009-09-09
引用第4楼尽情享受寂寞于2009-07-21 10:32发表的  :
     谢谢楼上,但我们老大要我用qt来写,希望通过比较进程名来确定指定的进程在不在。我现在不知道ps命令的源代码是什么?不知道如何枚举linux下当前的进程



楼上的这个问题是否已经解决,因为我现在也遇到这个问题。
快速回复
限100 字节
 
上一个 下一个