【Linux】【网络】进程间关系与守护进程
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
void daemonize() {
pid_t pid;
/* Step 1: Fork off the parent process */
pid = fork();
/* An error occurred */
if (pid < 0)
exit(EXIT_FAILURE);
/* Step 2: The parent process is killed */
if (pid > 0)
exit(EXIT_SUCCESS);
/* Step 3: The child process continues to run as a daemon */
setsid();
/* Step 4: Change the current working directory */
chdir("/");
/* Step 5: Redirect standard file descriptors */
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
}
int main() {
daemonize();
// 守护进程的核心工作代码
while(1) {
// 执行某些任务...
}
return 0;
}
这段代码展示了如何在C语言中创建一个简单的守护进程。daemonize
函数中的步骤是创建守护进程的标准过程,包括创建父进程、终止父进程、创建新会话、改变当前工作目录以及关闭标准文件描述符。在main
函数中,调用daemonize
函数后,进程成为了一个守护进程,并且可以执行自己的任务。
评论已关闭