打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
守护进程实例
#include "common.h"


int main(void)
{
    //1.修改权限掩码
    umask(0);

    //2.创建一个子进程,并且让他成为孤儿进程
    if(fork() == 0)
    {
        //作死的等,直到它爸挂了,然后被init进程领养
        while(getppid() != 1);    
        printf("被领养!\n");
    }
    else
    {
        exit(0);
    }

    //3.创建新的会话,让本进程没有终端
    pid = setsid();
    

    //4.更改工作目录
    chdir("/");

    //5.关闭不再需要的文件描述符
    int i;
    struct rlimit rlt;
    //获取进程当前所能打开的最大文件描述符
    getrlimit(RLIMIT_NOFILE, &rlt);
    //虽然创建了新的会话,没有终端,但是子进程从父进程继承了0/1/2这三个
    //文件描述符,这时候还是可以输出到终端。
    //所以我们要把这些文件描述符全部关闭
    printf("fileno:%d\n", rlt.rlim_cur);

    for(i=0; i<rlt.rlim_cur; i++)
    {
        close(i);
    }

    printf("a piece of shit\n");

    //6.产生0/1/2这三个文件描述符,让这些文件描述符指向空设备,
    //当有输入或者输出的时候不会有任何现象
    open("/dev/null", O_RDWR);
    open("/dev/null", O_RDWR);
    open("/dev/null", O_RDWR);

    //下面就是守护进程要做的事情
    while(1)
    {
        printf("fuck you\n");
    }

    return 0;
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
linux多进程之间的文件锁
管道
python fork 守护进程
UNIX环境编程学习笔记(5)
Shell中的>/dev/null 2>&1 与 2>&1 >/dev/null 与&>/dev/null 的区别
socket中close和shutdown
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服