Linux 下Qt实现守护进程

项目重要实现守护进程,搜索学习一些相关内容:

Linux 下Qt实现守护进程实例(转) - 走看看原文地址:Linux守护进程的编程方法(含实例) 作者:lingdxuyan参考文献Linux信号列表(zz)Linux 守护进程的编程方法linux上编写守护进程的例程Linux下后台守护进程的编写http://t.zoukankan.com/newstart-p-3503998.html

 linux守护进程 - 云+社区 - 腾讯云这是创建守护进程的第一步。由于守护进程是脱离控制终端的,因此,完成第一步后就会在Shell终端里造成程序已经运行完毕的假象。之后的所有工作都在子进程中完成,而用...icon-default.png?t=M4ADhttps://cloud.tencent.com/developer/article/1814438?from=15425

linux环境下获得进程的pid
1、进程查询函数

原理: 使用 popen函数 + pidof命令 查询对应进程的pid,该方法的缺点就是不能像windows那样读取所有进程名从而获取该进程运行的数量。所以,如果一个程序加载多个进程(同程序进程名相同,pid不同),使用该方法只能获取最后一个启动的进程pid。

popen属于标准I/O函数库中函数,使用该函数启动另外一个进程去执行一个shell命令行。
这里我们称调用popen的进程为父进程,由popen启动的进程称为子进程。
popen函数还创建一个管道用于父子进程间通信。父进程要么从管道读信息,要么向管道写信息,至于是读还是写取决于父进程调用popen时传递的参数。

实现函数如下,函数参数输入进程名,返回进程的pid,如果返回-1则表示进程不存在或未运行。

pid_t getProcessPidByName(const char *proc_name)
{
     FILE *fp;
     char buf[100];
     char cmd[200] = {'\0'};
     pid_t pid = -1;
     sprintf(cmd, "pidof %s", proc_name);
     if((fp = popen(cmd, "r")) != NULL)
     {
         if(fgets(buf, 255, fp) != NULL)
             pid = atoi(buf);
     }
     pclose(fp);
     return pid;
}

2、进程守护代码
实现上windows代码已经比较详细了,所以这里linux下简单实现。代码如下:

int main(int argc, char *argv[])
{
    while(1)
    {
        if(getProcessPidByName("qtcreator") == -1)
        {
            printf("open APP qtcreator...");
            system("qtcreator &");        //启动软件
        }
        sleep(5);        //需要大于软件启动时间
    }
    return 0;
}
 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

零点零一

您的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值