linux-守护进程
0x0 说明
守护进程也是网络编程这门课的知识点,但是没有实验要求,自己写了一下,然后记录一下。
参考连接:【Linux】守护进程( Daemon)的定义,作用,创建流程
照着这篇文章写的代码的,只写了创建守护进程的部分。
0x1 守护进程简介
贴一张参考链接的截图
0x2 代码实现截图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pB4QCtDG-1648301544882)(./picture/守护进程.png)]
0x3 源码
代码环境:
win10
VS2019 远程连接 ubuntu20
进行linux编程
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
#include<sys/stat.h>
#include<time.h>
#include<stdio.h>
static bool flag = true;
void create_deamon();
void handler(int);
int main() {
time_t t;
int fd;
create_deamon();//创建守护进程
sleep(60000);
return 0;
}
void create_deamon() {
pid_t pid;
pid = fork();
if (pid == -1) {
perror("fork() error\n");
_exit(1);
}
else if (pid) {//关闭父进程
_exit(1);
}
if (-1 == setsid()) { // 创建新会话
perror("setsid() error!\n");
_exit(1);
}
pid = fork();//子进程创建孙进程
if (pid == -1) {
perror("fork() error!\n");
_exit(1);
}
else if (pid) {//关闭当前进程
_exit(1);
}
chdir("/");//设置当前工作目录为"/"
int i;
for (i = 0; i < 3; i++) {//循环关闭文件描述符0、1、2;因为守护进程没有控制台,都不需要。
close(i);
}
umask(0);//孙进程调用,设置进程的文件权限掩码为0;
return;
}