linux guard什么进程,Linux Guard Service - 守护进程分裂

分裂守护进程

由于fork()后第一行仍然在循环中,使用fork()返回值鉴别当前进程的性质

int i = 0;

for (i = 0; i < 10; i++) {

// sleep(1);

printf("new fork() process pid = %d \n", pid);

pid = fork();

if (pid == 0) break;

}

pid==0时说明该进程为子进程不能再进行循环(否则将不断创造进程直到子进程上限)

子进程和父进程的关系

1. 子进程的fork()返回值为0

2. 子进程的pid序号紧接着父进程的序号

创建10个子进程

[root@localhost 03]# new fork() process pid = 11250

new fork() process pid = 11251

new fork() process pid = 11252

new fork() process pid = 11253

new fork() process pid = 11254

new fork() process pid = 11255

new fork() process pid = 11256

new fork() process pid = 11257

new fork() process pid = 11258

new fork() process pid = 11259

[root@localhost 03]#

[root@localhost 03]#

观察系统守护进程树

11250 ? Ss 0:00 ./test3-1

11251 ? S 0:00 \_ ./test3-1

11252 ? S 0:00 \_ ./test3-1

11253 ? S 0:00 \_ ./test3-1

11254 ? S 0:00 \_ ./test3-1

11255 ? S 0:00 \_ ./test3-1

11256 ? S 0:00 \_ ./test3-1

11257 ? S 0:00 \_ ./test3-1

11258 ? S 0:00 \_ ./test3-1

11259 ? S 0:00 \_ ./test3-1

11260 ? S 0:00 \_ ./test3-1

[root@localhost 03]#

fork()返回值的关系

在子进程中,fork返回值为0

在父进程中,fork返回值为子进程的pid

子进程直接复制父进程的PCB然后在fork紧接着的下一行开始执行(以防止fork中套fork的死循环情况)

僵尸进程

任何一个子进程(init除外)在exit()之后,并非马上就消失掉,而是留下一个称为僵尸进程(Zombie)的数据结构,等待父进程处理。

12711 ? Ss 0:00 ./test3-1

12712 ? Z 0:00 \_ [test3-1]

12713 ? Z 0:00 \_ [test3-1]

12722 ? Z 0:00 \_ [test3-1]

12723 ? Z 0:00 \_ [test3-1]

12724 ? Z 0:00 \_ [test3-1]

12725 ? Z 0:00 \_ [test3-1]

12726 ? Z 0:00 \_ [test3-1]

12727 ? Z 0:00 \_ [test3-1]

12729 ? Z 0:00 \_ [test3-1]

12730 ? Z 0:00 \_ [test3-1]

僵尸进程在ps -xf中的表示

杀死僵尸进程

使用pkill加进程名称,杀死全部进程

pkill test3-1

处理僵尸进程

通过信号机制

子进程退出时向父进程发送SIGCHILD信号,父进程处理SIGCHILD信号。在信号处理函数中调用wait进行处理僵尸进程。

fork两次

《Unix 环境高级编程》8.6节说的非常详细。原理是将子进程成为孤儿进程,从而其的父进程变为init进程,通过init进程可以处理僵尸进程。

使用信号机制处理僵尸进程

在源文件中使用

signal(SIGCLD, SIG_IGN);

通知内核本进程不关心子进程的结束,子进程将被init释放

13206 ? Ss 0:00 ./test3-2

Linux Guard Service - 守护进程的作用、用途、父进程标识的特点

让test2直接成为守护进程 [root@localhost 02]# cat test2.c //test2 #include #include

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

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

Linux Guard Service - 进程分裂与脱离

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

Linux Guard Service - 杀死守护进程

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

【Linux】- Ubuntu守护进程supervisor

linux的守护进程类似于windows的服务.linux通过supervisor创建守护进程. 1.安装supervisor sudo apt-get install supervisor 安装成功 ...

Linux架构--------Rsync守护进程推和拉

一.Rsync基本概述 rsync是一款开源.快速.多功能.可实现全量及增量的本地或远程数据同步备份的优秀工具.rsync软件适用于Unix/linux/Windows等多种操作系统平台. 二.Rsy ...

linux下的守护进程daemon

什么是守护进程?其实感觉守护进程并没有什么明确的定义,只是守护进程有一些特征,这是它需要遵循的. 守护进程的第一个特征是长时间在后台运行的程序,并且主要是为了提供某种服务,而为了能够让服务尽可能随时都 ...

linux shell脚本守护进程监控svn服务

最近搭建的svn服务不知道什么原因服务总是被关闭(如果你不知道怎么搭建svn可以参考linux下搭建svn版本控制软件),因此用shell脚本实现一个守护进程.用于监控svn服务是否启动,如果服务不在 ...

linux下daemon守护进程的实现&lpar;以nginx代码为例&rpar;

ngx_int_t ngx_daemon(ngx_log_t *log) { int fd; // 让init进程成为新产生进程的父进程: // 调用fork函数创建子进程后,使父进程立即退出.这样, ...

随机推荐

brew管理node的版本

摘要 nvm可以.brew怎么去切换不同的node版本 转载请注明出处:http://my.oschina.net/uniquejava/blog/491030 brew详解:http://stack ...

Zabbix学习笔记一:基本安装与配置

1.下载安装 http://120.52.73.43/tenet.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.0.1/za ...

sharepoint2013小技巧

一.创建基于经典认证的应用程序 New-SPWebApplication -Name "Contoso Internet Site" -ApplicationPool " ...

sqlplus 一次奇葩问题 HTTP proxy setting has incorrect value

y@y:~$ sqlplus Error 46 initializing SQL*PlusHTTP proxy setting has incorrect valueSP2-1502: The HTT ...

互联网点对点通讯(P2P)

摘自: http://www.cnblogs.com/zhili/archive/2012/09/14/p2p_pnpr.html 很遗憾,目前看了下代码,我测试只是做到了本地p2p. [C# 网络编 ...

Log4J积累

1.常用级别,从低到高:DEBUG

Markdown的简单用法

Markdown 是一种用来写作的轻量级标记语言,它用简洁的语法代替排版,而不像一般我们用的字处理软件 Word 或 Pages 有大量的排版.字体设置.它使我们专心于码字,用「标记」语法,来代替常见 ...

【centos6&period;5 hadoop2&period;7 &lowbar;64位一键安装脚本】有问题加我Q直接问

#!/bin/bash#@author:feiyuanxing [既然笨到家,就要努力到家]#@date:2017-01-05#@E-Mail:feiyuanxing@gmail.com#@TARGE ...

Appuim的安装步骤

1.下载Appium Desktop并安装 下载地址:https://github.com/appium/appium-desktop/releases 我下载的版本为:appium-desktop- ...

lucene 初探 - 查询

lucene初探, 是为了后面solr做准备的. 如果跳过lucene, 直接去看solr, 估计有点懵. 由于时间的关系, lucene查询方法也有多个, 所以单独出来. 一. 精确查询 /** * ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值