当前位置: 首页 > news >正文

青岛网站建设公司哪家好/如何自己做网站

青岛网站建设公司哪家好,如何自己做网站,网站开发logo,网站哪家公司好本文内容概述:1.守护进程的概念,特点,以及创建守护进程的代码实现。2.两次fork的原因。3.利用cron进程实现定时向终端打印数据的任务。守护进程的定义:守护进程是一种生存期长的进程。通常在系统引导装入时启动,仅仅在…

本文内容概述:

1.守护进程的概念,特点,以及创建守护进程的代码实现。

2.两次fork的原因。

3.利用cron进程实现定时向终端打印数据的任务。

守护进程的定义:

守护进程是一种生存期长的进程。通常在系统引导装入时启动,仅仅在系统关闭时终止。他们没有控制终端,所以,是在后台运行的。

守护进程的特点:

我们知道,打开系统,操作系统会通过0号进程去执行相应的操作;1号进程是init进程,也是系统的守护进程,它主要负责启动各运行层次特定的系统服务。

守护进程没有控制终端,不能直接和用户进行交互;不受登录注销的影响,只受开关机的影响。守护进程的命名都会以d结尾。

系统中有很多的守护进程,比如:

cron进程,完成特定的定时任务(下文我还会用cron);

kswapd进程,内存换页的守护进程。

flush进程,在可用内存达到最小阈值来冲洗磁盘。

创建守护进程的步骤:

(1)将文件模式的屏蔽字设置为0;

(2)fork出子进程,终止父进程(保证创建守护进程的进程不是进程组的组长);

(3)调用setsid创建一个新的会话;

(4)将当前工作目录改为根目录;

(5)关闭不需要的文件描述符;

(6)忽略SIGCHLD信号。

当然创建守护进程的另外一个办法就是直接调用库里的daemon()接口实现。下边的代码都是按照以上的6个步骤进行完成的。

代码实现:

#include

#include

#include

#include

#include

#include

void myDaemond()

{

umask(0);

pid_t id = fork();

if(id < 0)

{

return ;

}

else if(id > 0)

{

exit(0);

}

int ret = setsid();

if(ret < 0)

return;

ret = chdir("/");

if(ret < 0)

return;

close(0);

close(1);

close(2);

signal(SIGCHLD,SIG_IGN);

}

int main()

{

myDaemond();

while(1)

{

sleep(1);

}

return 0;

}

运行现象以及现象分析:

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

当然,也有人认为,必须进行两次fork进行创建守护进程,原因如下:

第一次fork(),保证调用setsid()创建守护进程的不是进程组组长(父进程才可能是进程组组长),所以,父进程退出,子进程来创建守护进程;

第二次fork(),保证当前的进程的ID与会话的ID不相等(也就是使得当前的进程不是会话组的话首进程),使得当前的进程无法打开新的控制终端。

代码实现:

#include

#include

#include

#include

#include

#include

void myDaemond()

{

umask(0);

pid_t id = fork();

if(id < 0)

{

return ;

}

else if(id > 0)

{

exit(0);

}

int ret = setsid();

if(ret < 0)

return;

if(fork() > 0)

{

exit(0);

}

ret = chdir("/");

if(ret < 0)

return;

close(0);

close(1);

close(2);

signal(SIGCHLD,SIG_IGN);

}

int main()

{

myDaemond();

while(1)

{

sleep(1);

}

return 0;

}

运行结果:

0818b9ca8b590ca3270a3433284dd417.png

关于进程的目录,文件描述符等信息的查看,办法同上。

cron守护进程(crond)实现定时任务:

输入命令查看系统中的cron进程。

0818b9ca8b590ca3270a3433284dd417.png

cron守护进程实现定时任务:

根据cron的基本命令,也就是crontab,可以实现每隔一段时间向某个文件中写入相应的内容。

安装crontab,命令:

yum install crontabs

查看crontab文件中的内容:

0818b9ca8b590ca3270a3433284dd417.png

关于crontab的一些命令:

crontab -e:编辑crontab文件

crontab -r:删除crontab文件

crontab -l:列出crontab文件

crontab -u:指定某一用户的crontab文件

命令举例:

(1)每天的8点整向hello.c文件中写入内容“新的一天,加油~”

0 8 * * * peiyao echo > “新的一天,加油~”

(2)每一小时向hello.c文件中写入“该休息了~”

* /1 * * peiyao echo > “该休息了”

(3)每周六,周日的9点执行ls命令

* * * * 6,0 peiyao ls

(4)每天的12点到13点每隔30分钟执行一次 cat hello.c

/30 12-13 * * peiyao cat hello.c

实现效果:

通过crontab -e命令向crontab文件中写入以下的命令,通过crontab -l进行查看:

0818b9ca8b590ca3270a3433284dd417.png

几分钟之后,查看hello.c文件:

0818b9ca8b590ca3270a3433284dd417.png

有时,我们希望将内容打印到终端上,所以…..(当时和同学讨论了很久,最后才是得出解决办法)

我们知道linux下一切皆文件,既然我们可以将内存写到普通文件,那为什么写不到终端上呢。

通过tty命令或者通过ttyname(fd)查看当前的终端.

0818b9ca8b590ca3270a3433284dd417.png

然后再次编写crontab文件。

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

现象如下:

0818b9ca8b590ca3270a3433284dd417.png

这样,我们就可以实现一个简单的定时任务~~

http://www.lbrq.cn/news/1436347.html

相关文章:

  • 网站icp备案要多久/艺术培训学校招生方案
  • 工信部网站原来是/靠谱的拉新平台
  • 巨野网站建设/成人短期电脑培训班学费
  • 做网站如何导入信用卡付款/网页设计与制作教程
  • 秦皇岛网站设计公司/网站制作软件免费下载
  • 湖南党政建设网站/免费网站怎么申请
  • 网站的横幅怎么做的/关键词优化排名软件推荐
  • wordpress网页设定/天津seo排名扣费
  • 中卫网站制作公司报价/公司关键词seo
  • 做网站怎么推广/营销软文小短文
  • 沈阳三好街网站建设/如何联系百度人工客服
  • wordpress微信排版/seo推广哪家好
  • 常见的静态网站开发技术/如何宣传网站
  • 怎么在云服务器上建设网站/东莞seo网络推广专
  • 做视频网站资金多少/安徽百度seo公司
  • 有哪些做兼职的设计网站有哪些工作内容/seo互联网营销培训
  • 做赌场网站代理/全网推广系统
  • 亚马逊deal网站怎么做/郑州百度推广公司地址
  • 南乐网站建设/今日的重大新闻
  • 网站制作收费标准/石家庄疫情
  • 做食品团购去那家网站好/广告网络
  • 如何做网站关键词收录/东莞做网站公司
  • 回老家做PHP网站/网络营销主要是学什么的
  • 西安 网站 公司/西安关键词排名首页
  • 如和做视频解析网站/智慧软文发稿平台
  • 手机网站建设报价多少/公司推广方案
  • 微信h5页面制作免费/西安抖音seo
  • 互联网是什么/重庆网站搜索引擎seo
  • 牡丹江制作网站/搜索营销
  • web前端网站开发实例/郑州网络营销策划
  • 【22-决策树】
  • [论文阅读] 人工智能 + 软件工程 | 代码变更转自然语言生成中的幻觉问题研究解析
  • 《疯狂Java讲义(第3版)》学习笔记ch4
  • OpenLayers与Vue.js结合实现前端地图应用
  • 从根源到生态:Apache Doris 与 StarRocks 的深度对比 —— 论开源基因与长期价值的优越性
  • antdv Modal的简单使用