linux 网络 守护进程 禁止,Linux守护进程基础

1 守护进程中涉及到的基本概念

1.1进程组

1.1.1 进程组基本概念

进程组是一个或多个进程的集合,可以接收来自同一个终端的各种信号。每运行一个程序或是命令都将产生一个进程组。

每个进程属于一个进程组,而每个进程组都存在一个领头进程(或是叫组长进程),一般进程组的第一个进程是领头进程。领头进程可以创建一个进程组、创建该组中的进程。领头进程fork出的子进程也将在该进程组中,一旦子进程执行exec等退出函数就不再属于该进程组。

进程组的生命周期:从创建开始到最后一个进程离开为止成为进程组的生命周期。组中最后一个进程的离开可以是终止,或加入其他进程。进程组的生命周期与组长进程是否终止无关,只要有一个进程存在,进程组的生命周期就未结束。

1.1.2 相关命令

1、查看所有进程组pid(即领头进程的pid):ps –A –o pgrp= | sort |uniq

2、查看某个进程的进程组pid:ps –C 进程名 –o pgrp=

3、根据进程名获得进程pid:pidof 进程名

4、根据进程pid获得进程名:ps –aux |grep 进程pid

5、获取某个进程的具体信息:ps –ef |grep 进程名或进程pid

1.1.3 相关函数

#include

pid_t getpgrp();    //获取进程组pid,即进组中的领头进程的pid,相当于调用getpgid(0)

pid_t getpid();     //获取当前进程pid

pid_t getppid();    //获取当前进程的父pid

pid_t getpgid();    //返回指定进程的进程组pid

int setpgid(pid_t pid, pid_t pgid); /*将pid进程的进程组id设置为pgid,如果两个参数相等,

*则pid指定的进程变成进程组组长。如果pid是0,则进程

*组id为pgid,如果pgid是0,则进程组id为pid。*/

int setpgrp();  //将当前进程所属的进程组的pid设置为当前进程的pid,相当于setpgid(0, 0)

1.2会话

1.2.1 会话基本概念

一次登录形成一个会话,一个会话可包括多个进程组(www.linuxidc.com一个前台进程组和多个后台进程组),但只能有一个前台进程组。

1.2.2 相关函数

#include

pid_t setsid();

当调用该函数的进程不是进程组的领头进程时,该函数才能建立新的会话。函数调用成功后,调用进程成为新会话的领头进程和新进程的领头进程,同时进程失去控制终端。

1.3控制终端

进程组中有领头进程,类似地,会话中也对应有领头进程。会话的领头进程打开一个终端之后,该终端就成为会话的控制终端,与控制终端建立连接的会话的领头进程成为控制进程(session leader)。一个会话只能有一个控制终端,同时一个控制终端只能一个会话。         产生在控制端上的输入和信号(比如按下ctrl+c就会产生SIGINT信号)将发送给会话的前台进程组中的所有进程。

2守护进程及其特性

1、守护进程最重要的特性是后台运行;

2、守护进程必须与其运行前的环境脱离开来。这些环境包括未关闭的文件描述符,控制终端,会话和进程组,工作目录等,这些环境通常是从执行它的父进程(特别是Shell)中继承下来的。

3、守护进程可以在Linux系统启动时从脚本/etc/rc.d中启动,可以由作业规划进程crond启动,还可以由用户终端(通常是Shell)执行。

3 守护进程编程

针对守护进程的特性可以将普通进程改造为守护进程。

3.1后台运行特性

让daemon在子进程中运行。

if( pid=fork() )

{

exit(0);  //父进程结束,子进程继续

}

3.2脱离环境

3.2.1脱离进程组、登录会话和控制终端

进程组、登录会话和控制终端通常都是从父进程继承下来的,为了不受它们的影响,控制终端必须将其摆脱。具体方法是调用setsid函数。

通过if( pid=fork() ){exit(0);}将产生了子进程,能保证调用setsid的进程不是进程组中的领头进程。当setsid调用成功后,该子进程成为新会话中的领头进程和进程组的领头进程,并脱离了原来的会话、进程组和控制终端。

3.2.2禁止进程打开控制终端

if( pid=fork() )

{

exit(0);  //该子进程结束,又产生子进程

}

结束该子进程,产生新的子进程,此时的新子进程不是会话领头进程,所以不能打开控制终端。通过这种方式就能禁止进程打开控制终端。

3.2.3脱离打开的文件描述符

进程从其父进程继承了打开的文件描述符。如不关闭,将会造成系统资源的浪费,同时,造成进程所在的文件系统无法卸载以及引起其他无法预料的错误。

max_fd = sysconf(_SC_OPEN_MAX);

for(i = 0; i < max_fd; i++)

{

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467418.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

抽象工厂的应用

抽象工厂的应用本文是描述了自己对设计模式的工厂的了解.肯定有错误和不足的地方,希望大家能给予支持和建议. 1&#xff0e;问题的引出在前面的Post中,我描述了.NET的反射在软件设计中的应用.当这篇Post发表之后&#xff0c;有人认为用工厂来实现更合理一些。在这篇Post里&…

一口气搞懂「文件系统」,就靠这 25 张图了

前言不多 BB&#xff0c;直接上「硬菜」。正文文件系统的基本组成 文件系统是操作系统中负责管理持久数据的子系统&#xff0c;说简单点&#xff0c;就是负责把用户的文件存到磁盘硬件中&#xff0c;因为即使计算机断电了&#xff0c;磁盘里的数据并不会丢失&#xff0c;所以可…

linux里没有grub文件,linux – 安装Ubuntu后没有grub菜单,直接启动...

我有两个独立的SSD.其中一个安装了Windows 10 Pro,另一个安装了Ubuntu 14.04.3 LTS.当我的计算机启动时,我没有选择grub菜单来选择我要启动的操作系统,它会直接自动启动到Ubuntu.当将SSD设置为BIOS中引导顺序中的第一个SSD时,我可以启动进入Windows的问题.我有第三个2TB硬盘,我…

Samba远程代码执行漏洞(CVE-2017-7494)复现

简要记录一下Samba远程代码执行漏洞(CVE-2017-7494)环境搭建和利用的过程&#xff0c;献给那些想自己动手搭建环境的朋友。(虽然已过多时) 快捷通道&#xff1a;Docker ~ Samba远程代码执行漏洞(CVE-2017-7494) 演 示&#xff1a;服务器版“永恒之蓝”高危预警 &#xff0…

mac 终端登陆linux,Mac终端自动登录服务器

效果输入命令&#xff0c;选择一个序号登录服务器$ aoel(1) first 192.168.1.1(2) 第二台机器 192.168.1.2配置文件1. 填写服务器信息 computerInfo.ini#ip port user password description192.168.1.1 22 root 123456 first machine192.168.1.2 22 root 123456 第二台机器2. 使…

你说,辽宁输在哪了?

今晚看完了整场比赛&#xff0c;比赛很激烈&#xff0c;有完美的地方&#xff0c;也有不完美的地方看完比赛后&#xff0c;我一个刚从美国回来&#xff0c;现在在凤凰山脚下隔离的同学发消息给我说 「怎么才打三场就拿了总冠军了」&#xff1f;说下比赛整场比赛&#xff0c;辽宁…

[导入]Gemini翻譯為中文時的注意事項

1. 一般檔案 *.aspx, *.ascx 在翻譯為繁體中文或簡體中文後都要儲存為ANSI格式&#xff0c;不可用UTF-8&#xff0c;不然會亂碼&#xff0c;繁體轉簡體也有問題 2. Template中信件的樣版檔案 *.vm &#xff0c;反而要另存為 UTF-8 格式&#xff0c;不然收到的信會是亂…

linux cocos环境变量,Linux开发cocos2dx程序环境搭建

安装linux系统&#xff0c;ubuntu 14.04 64位linux安装支持软件sudo apt-get updatesudo apt-get install git ssh vim ctags qt-sdk build-essential libx11-dev libxmu-dev libglu1-mesa-dev libgl2ps-dev libxi-dev libglfw-dev libzip-dev libcurl4-gnutls-dev libfontconf…

答应了好久的camera资料

之前是在知识星球上&#xff0c;有好几个同学问了camera的资料&#xff0c;我简单的说了下&#xff0c;也送了些资料&#xff0c;然后微信好友又有人问&#xff0c;我觉得camera这个&#xff0c;应该是要发一次资料了。之前写过的关于camera的文章安卓camera总体框架Camera摄像…

[新功能]删除团队文章

现在团队管理员可以删除团队中的文章。操作方法&#xff1a;在团队管理中&#xff0c;选择“文章管理”&#xff0c;然后可以在列出的文章标题旁点击“移出”&#xff0c;或者手动输入文章地址进行移出。转载于:https://www.cnblogs.com/dudu/archive/2005/05/16/156674.html

第九周学习

20162310林臻 《程序设计与数据结构》第九周学习总结 教材学习内容总结 堆的学习及其方法的应用堆排序利用堆的基本特征对一组元素进行排序 教材学习中的问题和解决过程问题1&#xff1a;堆和二叉树有什么区别呢问题1解决方案&#xff1a;1、堆是一个完全二叉树&#xff0c;并且…

Linux kernel同步机制

在现代操作系统里&#xff0c;同一时间可能有多个内核执行流在执行&#xff0c;因此内核其实像多进程多线程编程一样也需要一些同步机制来同步各执行单元对共享数据的访问&#xff0c;尤其是在多处理器系统上&#xff0c;更需要一些同步机制来同步不同处理器上的执行单元对共享…

linux 文件系统 簇 浪费空间,Linux rm -rf删除文件不释放空间的解决办法

前几天发现在Linux系统下有一个很大的无用文件&#xff0c;于是用rm -rf 删除&#xff0c;然后用df -h查看磁盘空间&#xff0c;发现即使文件被删除了&#xff0c;但文件所占用的空间并未释放&#xff0c;十分疑惑&#xff0c;于是在网上找到了解决方案&#xff0c;即使用lsof …

[Diary]6.10

一大早回闵行&#xff0c;继续奋斗论文。我真是个小巫&#xff0c;不停的自言自语。

linux 特定用户ssh,linux - 如何在登录后将SSH用户限制为一组预定义的命令?

你为什么不写自己的login-shell&#xff1f; 为此使用Bash会非常简单&#xff0c;但您可以使用任何语言。Bash中的示例使用您喜欢的编辑器创建文件;(这可以是任何名称或路径&#xff0c;但应该是&和&&)&#xff1a;#!/bin/bashcommands("man" "pwd&…

水晶报表的推模式

在一个多层结构中&#xff0c;水晶报表的使用往往比较繁琐&#xff1a;1、在项目中添加数据集&#xff0c;形成xsd文件2、利用xsd文件&#xff0c;在水晶报表环境中生成报表3、回到.net&#xff0c;添加rpt文件这样做的坏处除了繁琐&#xff0c;就是在UI层直接要访问数据库&…

关于sql和MySQL的语句执行顺序(必看!!!)

ql和mysql执行顺序&#xff0c;发现内部机制是一样的。最大区别是在别名的引用上。 一、sql执行顺序 (1)from (3) join (2) on (4) where (5)group by(开始使用select中的别名&#xff0c;后面的语句中都可以使用)(6) avg,sum.... (7)having (8) select (9) distinct (10) orde…

fedora linux命令,Fedora Linux的一些常用设置和常用命令

1.设置常用路径跳转:alias ubootcd /opt/U-boot-2009.11_tekkaman/U-boot-2009.11_tekkaman/2.samba服务重启命令在更改ip后&#xff0c;或修改samba配置文件后&#xff0c;如果没有重启服务&#xff0c;所作的修改实际上是不会生效的重启网络服务的命令是service network rest…

10大黑客专用的 Linux 操作系统,你了解哪些?

今天列出一些最常用、最受欢迎的Linux发行版来学习黑客和渗透测试。1. Kali LinuxKali Linux是最著名的Linux发行版&#xff0c;用于道德黑客和渗透测试。Kali Linux由Offensive Security开发&#xff0c;之前由BackTrack开发。Kali Linux基于Debian。它带有来自安全和取证各个…

【windows phone】CollectionViewSource的妙用

在windows phone中绑定集合数据的时候&#xff0c;有时候需要分层数据&#xff0c;通常需要以主从试图形式显示。通常的方法是将第二个ListBox&#xff08;主视图&#xff09;的数据源绑定到第一个ListBox &#xff08;从视图&#xff09;的SelectedItem&#xff0c;或者通过第…