让test2直接成为守护进程

[root@localhost 02]# cat test2.c
//test2
#include<stdio.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/stat.h>
#include<stdlib.h> int main(){ if(daemon(1,1)==-1){
perror("daemon error");
exit(EXIT_FAILURE);
} int i=0; while(1){
FILE *fd=fopen("test2.log","a");
fprintf(fd,"%d 1552227\n",i++);
sleep(1);
fclose(fd);
}
return 0;
}
[root@localhost 02]#

执行test2后生成了test2.log文件,不断更新的test2.log表示其在不断运行

32 1552227
33 1552227
34 1552227
35 1552227
36 1552227
37 1552227
38 1552227
39 1552227
40 1552227
[root@localhost 02]#

退出当前终端,(此时不再提示有进行中的任务)启用新终端,再观察test2.log

37 1552227
38 1552227
39 1552227
40 1552227
41 1552227
42 1552227
43 1552227
44 1552227
[root@localhost 02]#

发现程序依然在正常执行

使用

ps -xf

查看所有守护进程

  2761 ?        Sl     0:00  \_ /usr/libexec/evolution-addressbook-factory-subpr
2766 ? Sl 0:00 /usr/libexec/ibus-x11 --kill-daemon
2837 ? Sl 0:00 /usr/libexec/gvfsd-network --spawner :1.4 /org/gtk/g
2852 ? Sl 0:00 /usr/libexec/gvfsd-dnssd --spawner :1.4 /org/gtk/gvf
9158 ? Ss 0:00 ./test2
9187 ? Sl 0:00 /usr/sbin/abrt-dbus -t133
[root@localhost 02]#

./test2是顶级进程,没有父进程(不同于之前的以-bash作为父进程

在进程中打印信息,可以使用向log输出的方法,但是注意几点

  1. 写文件每次都要close,否则是写不进去的
  2. 要对程序写日志加以控制,否则会产生上GB的文本日志,多个写日志程序同时运行可能会宕机系统

Linux Guard Service - 守护进程的作用、用途、父进程标识的特点的更多相关文章

  1. Linux Guard Service - 守护进程再次分裂子进程

    当系统区内存不能再申请新进程的时候申请会失败 在512MB内存下最多分配的子进程数 3331 [root@localhost 05]# ./test5-1 50000 expect 50000 sub ...

  2. Linux Guard Service - 守护进程分裂

    分裂守护进程 由于fork()后第一行仍然在循环中,使用fork()返回值鉴别当前进程的性质 int i = 0; for (i = 0; i < 10; i++) { // sleep(1); ...

  3. Linux Guard Service - 杀死守护进程

    杀死某个子进程 杀死守护进程的子进程后,改进程会变为僵尸进程 14087 ? Ss 0:00 ./test4-1 14088 ? S 0:00 \_ ./test4-1 14089 ? S 0:00 ...

  4. Linux Guard Service - 进程分裂与脱离

    进程分裂更名 void set_ps_name(char *name) { prctl(PR_SET_NAME, name); } 修改进程长名称 备份进程环境变量空间 for (i = 1; i & ...

  5. Linux Guard Service - 前台进程和后台进程切换

    把一个正在执行的程序放入后台 [root@localhost 01]# Ctrl+Z 此使程序被移动到后台,但不能继续输出(处于暂停态) [root@localhost 01]# ./test1-1 ...

  6. Linux下利用fork()创建子进程并使父进程等待子进程结束

    int status; pid_t t = fork(); if(t){     waitpid(t, &status, 0); }else{     system("vi temp ...

  7. 2020-04-17:说说redis的rdb原理。假设服务器的内存8g,redis父进程占用了6g,子进程fork父进程后,子父进程总共占用内存12g,如何解决内存不足的问题?(挖)

    福哥答案2020-04-18: 这是一道挖坑题.内存占用只会比6g多一点,不会用12g.fork+cow.

  8. Android 保持Service不被Kill掉的方法--双Service守护 && Android实现双进程守护

    本文分为两个部分,第一部分为双Service守护,第二部分为双进程守护 第一部分: 一.Service简介:Java.lang.Object ↳Android.content.Context  ↳an ...

  9. 保持Service不被Kill掉的方法--双Service守护 && Android实现双进程守护

    本文分为两个部分,第一部分为双Service守护,第二部分为双进程守护 第一部分: 一.Service简介:Java.lang.Object ↳Android.content.Context  ↳an ...

随机推荐

  1. C# 命名空间(Namespace)

    命名空间的设计目的是提供一种让一组名称与其他名称分隔开的方式.在一个命名空间中声明的类的名称与另一个命名空间中声明的相同的类的名称不冲突. 也即是不同的命名空间可以有相同的类名

  2. scrapy核心组件工作流程和post请求

    一 . 五大核心组件的工作流程 引擎(Scrapy)用来处理整个系统的数据流处理, 触发事务(框架核心) 调度器(Scheduler)用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返 ...

  3. krpano之缩略图文本添加

    效果: 在缩略图上添加文本,显示缩略图名称. 方法:将皮肤中的 skin_addthumbs 方法替换为一下代码. <action name="skin_addthumbs" ...

  4. 关于Android的margin(当前视图与周围视图的距离)和padding(当前视图与内部内容的距离)

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  5. 关于Web项目出现懒加载异常的解决方案

    manytomany关系中,使用 fetch = FetchType.LAZY 来做懒加载,加快些性能.但是却一直出错,原因是session被关闭,要保持session,需要事务. Hibernate ...

  6. 学习ios一段过程后的思考

    现在回想起来,学习ios也有一段时间了,大概三个月不到吧,本来是搞linux驱动,刚开始来公司就我一个人负责驱动的东西,主要就是一些bug的解决,后来系统基本上稳定了,我就闲下来了,公司又有些移动医疗 ...

  7. Python列表的生成

    要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们可以用range(1, 11): >>> range(1, 11) [1, 2, 3, 4, 5, ...

  8. 解决linux下root运行Elasticsearch异常

    如果以root身份运行将会出现以下问题 root@yxjay:/opt/elasticsearch-2.3.5/bin# ./elasticsearchException in thread &quo ...

  9. ZTree 获取选中的项,jQuery radio的取值与赋值

    $("input[name='Sex']:checked").val();//取值 $("input[name='radioName'][value=2]"). ...

  10. lnline Hook初试

    简单解释下hook: 钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的.当消息到达后,在目标窗口处理 ...