Linux系统编程---守护进程-阿里云开发者社区

开发者社区> 开发与运维> 正文

Linux系统编程---守护进程

简介: 守护进程是什么?就是在后台运行的进程。 那么如何创建守护进程呢?  1. 创建孤儿进程 2. setsid() 创建进程会话 3. 重定向标准输入, 标准输出 4. chdir, 改当当前进程的工作目录 接下来看一个例子: #include #include #include int ...

守护进程是什么?就是在后台运行的进程。

那么如何创建守护进程呢?

 1. 创建孤儿进程
 2. setsid() 创建进程会话
 3. 重定向标准输入, 标准输出
 4. chdir, 改当当前进程的工作目录

接下来看一个例子:

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>

int main(void)
{
	//进程成为守护进程的步骤
	//代号:Ss
	//守护进程也称为精灵进程    
	//1.产生孤儿进程
	
	pid_t  pid ; 
	int fd ;
	pid = fork();
	if(0 == pid)
	{
		//2.改变工作目录
		chdir("/");
		//3.成为进程组长
		setsid();
		//4 1>.关闭标准输入,输出,出错
		//close(0);
		//close(1);
		//close(2);

		//2>  重定向
		fd = open("/dev/null" , O_RDWR);
		if(-1 == fd)
		{
			perror("Open null file fail");
			return -1 ;
		}
		//禁掉标准输入,输出,出错,不然输出的东西会在终端乱喷
		//Ctrl + C 无效
		dup2(fd , 0);
		dup2(fd , 1);
		dup2(fd , 2);

		while(1)
		{
		//main event loop
			printf("hello world \n");
			sleep(1);
		}

		return 0 ;
	}
	//父进程直接退出

	return 0 ;
}


版权声明:本文首发在云栖社区,遵循云栖社区版权声明:本文内容由互联网用户自发贡献,版权归用户作者所有,云栖社区不为本文内容承担相关法律责任。云栖社区已升级为阿里云开发者社区。如果您发现本文中有涉嫌抄袭的内容,欢迎发送邮件至:developer2020@service.aliyun.com 进行举报,并提供相关证据,一经查实,阿里云开发者社区将协助删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章