linux——守护进程守护刷抖音程序不被意外退出
创始人
2024-05-24 02:43:59
0

先搞清楚几个概念:

udev:

设备管理工具,以守护进程的方式工作。位于应用层,主要用于监听内核硬件状态,它能够根据系统中的硬

件设备的状态动态更新设备文件,包括设备文件的创建,删除等

守护进程:

  1. 守护进程和终端无关联,也就是他们没有控制终端,所以当控制终端退出,也不会导致守护进程退出

  1. 守护进程是在后台运行,不会占着终端,终端可以执行其他命令

  1. 一个守护进程的父进程是init进程,因为它真正的父进程在fork出子进程后就先于子进程exit退出

  1. 了,所以它是一个由init继承的孤儿进程

ps -elf:查看系统进程,一般为d结尾的就是守护进程(用户),带[]的表示内核的守护进程

用守护进程的方式不让刷抖音程序意外退出:

直接借助damon()函数完成

#include 
int daemon(int nochdir, int noclose);
/*函数参数:
nochdir:为0时表示将当前目录更改至“/”,目的是为了和用户目录不挂钩,用户目录一般为/orangepi
noclose:为0时表示将标准输入、标准输出、标准错误重定向至“/dev/null”
返回值:
成功则返回0,失败返回-1
*/
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
//C 库函数 char *asctime(const struct tm *timeptr) 返回一个指向字符串的指针,它代表了结
//构 struct timeptr 的日期和时间。
//C 库函数 struct tm *localtime(const time_t *timer) 使用 timer 的值来填充 tm 结构。
//timer 的值被分解为 tm 结构,并用本地时区表示。
/*
struct tm {
int tm_sec; 秒,范围从 0 到 59
int tm_min; 分,范围从 0 到 59
int tm_hour; 小时,范围从 0 到 23
int tm_mday; 一月中的第几天,范围从 1 到 31
int tm_mon; 月份,范围从 0 到 11
int tm_year; 自 1900 起的年数
int tm_wday; 一周中的第几天,范围从 0 到 6
int tm_yday; 一年中的第几天,范围从 0 到 365
int tm_isdst; 夏令时
};
*/
static bool flag = true;
void handler(int sig)
{
printf("I got a signal %d\nI'm quitting.\n", sig);
flag = false;
}
int main()
{
time_t t;
int fd;
//创建守护进程
if(-1 == daemon(0, 0))
{
printf("daemon error\n");
exit(1);
}
//设置信号处理函数
struct sigaction act;
act.sa_handler = handler;
sigemptyset(&act.sa_mask);
act.sa_flags = 0;
if(sigaction(SIGQUIT, &act, NULL))
{
printf("sigaction error.\n");
exit(0);
}
//进程工作内容
while(flag)
{
fd = open("/home/orangepi/daemon.log", O_WRONLY | O_CREAT | O_APPEND,
0644);
if(fd == -1)
{
printf("open error\n");
}
t = time(0);
char *buf = asctime(localtime(&t));//获取时间,并把时间转换成人类可以看懂的形式
write(fd, buf, strlen(buf));
close(fd);
sleep(10);//休眠10秒
}
return 0;}

编译运行上述代码可以看到,运行没有任何结果输出,但是查看系统进程可以发现,有个父进程为1的进程,这个就是编写的守护进程,并且在工作目录底下可以看到日志文件,每隔十秒发送时间相关信息(代码有解析),日志文件内容如下:

实现守护进程开机自启动:

:sudo vi /etc/rc.local(打开这个文件)

:找到守护进程的可执行文件路径(我的是/home/orangepi/tdamon)

把它放进文件里就ok了

:sudo reboot(重启试一下)

成功!

开始实现刷抖音程序的守护进程

第一步:

写个脚本来搜索刷抖音的程序

  1 #include 2 #include 3 int main()4 {5     FILE *file;67     char *cmd = "ps -elf|grep shuadouy|grep -v grep";8     char buffer[128] = {'\0'};//定义一个128个字节的数组,并且全部初始化为09     file = popen(cmd,"r");//相对于open的好处在于可以读取终端上打印的东西1011     fgets(buffer,128,file);//在file这个文件里面读取128个字节到buffer里面去1213     if(strstr(buffer,"shuadouy") != NULL){//在buffer里面判断是否有"shuadouy"这样的字串14         printf("shuhadouy pro is running!\n");1516     }else{17         printf("shuhadouy pro is error!\n");181920     }21     printf("buffer:%s\n",buffer);22 }

打开和关闭刷抖音程序时:

第二步:把抖音进程和守护进程关联起来

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
static bool flag = true;
int daemon(int nochdir, int noclose);
void handler(int sig)
{printf("I got a signal %d\nI'm quitting.\n", sig);flag = false;
}int judMent()
{FILE *file;char *cmd = "ps -elf|grep shuadouy|grep -v grep";char buffer[128] = {'\0'};//定义一个128个字节的数组,并且全部初始化为0file = popen(cmd,"r");//相对于open的好处在于可以读取终端上打印的东西fgets(buffer,128,file);//在file这个文件里面读取128个字节到buffer里面去if(strstr(buffer,"shuadouy") != NULL){//在buffer里面判断是否有"shuadouy"这样的字串return 0;}else{return -1;}printf("buffer:%s\n",buffer);}
int main()
{time_t t;int fd;//创建守护进程if(-1 == daemon(0, 0)){printf("daemon error\n");exit(1);}//设置信号处理函数struct sigaction act;act.sa_handler = handler;sigemptyset(&act.sa_mask);act.sa_flags = 0;if(sigaction(SIGQUIT, &act, NULL)){printf("sigaction error.\n");exit(0);}//进程工作内容while(flag){if(judMent() == -1){system("/home/orangepi/douyin/shuadouy /dev/ttyS5 &");//&代表后台运行}sleep(2);}return 0;}

结果就是:

守护进程能跑起来,而且杀不掉,杀掉又会重新来一个id

加入上电自启动:

把守护进程和刷抖音的程序都加进来

全部完成

相关内容

热门资讯

新高考I卷山东高考作文【精彩... 新高考I卷山东高考作文 篇一:新高考改革下的挑战与机遇随着新高考改革的深入推进,山东高考也迎来了新的...
高考满分作文记叙文作文(实用... 高考满分作文记叙文作文 篇一失而复得的梦想那一年的高考,对我来说是一个重要的转折点。在备战高考的过程...
英语高考作文写作范文【精彩6... 英语高考作文写作范文 篇一标题:The Importance of Learning English...
扬长避短,方能成功高考优秀作... 扬长避短,方能成功高考优秀作文 篇一在高考备战的过程中,每个学生都有自己的优势和劣势。有的同学擅长理...
安徽高考作文解析及:像苏洵一... 安徽高考作文解析及:像苏洵一样教育孩子 篇一随着高考的临近,安徽省的学生们都在紧张备战,而其中最重要...
高考作文指导:借用章回小说笔... 高考作文指导:借用章回小说笔法开头 篇一纵观历届高考作文题目,我们会发现一个共同的特点,那就是题目往...
北京市高考满分作文未产生零分... 北京市高考满分作文未产生零分作文已出现 篇一近年来,北京市高考满分作文逐渐成为一种现象,令人瞩目。然...
浙江卷高考优秀作文【优选6篇... 浙江卷高考优秀作文 篇一桃花源的美丽桃花源,位于浙江的一个小村庄,以其独特的美丽而闻名。每年春天,当...
高考作文案例“以自己的方式改... 高考作文案例“以自己的方式改变世界” 篇一第一篇内容以自己的方式改变世界改变世界,是每个人心中的一个...
山东高考满分作文(推荐6篇) 山东高考满分作文 篇一:我的家乡山东山东,一个位于中国东部的美丽省份,是我热爱的家乡。这里有壮丽的自...
上海卷高考满分作文【精彩3篇... 上海卷高考满分作文 篇一如何做好高中生活的规划高中生活是人生中最重要的阶段之一,它不仅关乎我们的学习...
高考满分作文【实用6篇】 高考满分作文 篇一:《中国梦:我与未来的契约》中国梦,是每个中国人的梦想,是亿万人民的期盼。作为一名...
高考满分作文【通用6篇】 高考满分作文 篇一:坚持,让梦想照进现实高考,是每个学子心中的一道大关,更是一个人成长的里程碑。在这...
高考广东卷作文题目(经典3篇... 高考广东卷作文题目 篇一:探讨高考改革对学生综合素质的影响随着时代的发展和社会的变迁,高考作为一项重...
莆田新疆班将在莆田参加高考(... 莆田新疆班将在莆田参加高考 篇一新疆班是指由新疆籍学生组成的高中班级,这个班级通常由教育部门统一组织...
2019高考作文范文格式【最... 2019高考作文范文格式 篇一标题:人工智能对社会的影响人工智能(Artificial Intell...
高考作文题预测及:“天已微亮... 高考作文题预测及:“天已微亮” 篇一随着高考的临近,考生们无疑都对作文题目预测产生了浓厚的兴趣。因为...
辽宁的高考满分作文【优质6篇... 辽宁的高考满分作文 篇一辽宁的高考满分作文辽宁作为中国东北地区的一个重要省份,其高考制度一直备受关注...
江苏高考满分文言文作文《绿色... 江苏高考满分文言文作文《绿色生活》及译文 篇一绿色生活绿色乃大自然之底色也,人之生活当亦宜绿色。然而...
高考作文万能结尾(推荐4篇) 高考作文万能结尾 篇一:凝聚力量,共创未来在这个充满挑战和机遇的时代,高考作文无疑是考生们展示自己思...