美文网首页
Linux 后台执行代码

Linux 后台执行代码

作者: delta1037 | 来源:发表于2021-05-12 11:06 被阅读0次
#include <sys/types.h>
#include <sys/stat.h>
int start_bg()
{
    pid_t pid;
    // 1.转变为后台进程
    if ((pid = fork() ) != 0 )
        exit( 0);

    // 2.离开原先的进程组
    setsid();
 
    // 3.禁止再次打开控制终端
    if ((pid = fork()) != 0)
    {
        exit(0);
    }

    // 4.关闭打开的文件描述符,避免浪费系统资源
    rlimit rlim;
    if(getrlimit(RLIMIT_NOFILE,&rlim) == 0)
    {
        for(int fd=3; fd<=(int)rlim.rlim_cur; fd++)
        {
            close(fd);
        }
    }

    // 5.改变当前的工作目录,避免卸载不了文件系统
    if (chdir("/") == -1) exit(1);

    // 6.重设文件掩码,防止某些属性被父进程屏蔽
    umask(0);
    setpgrp();

    // 7.重定向标准输入,输出,错误流,因为守护进程没有控制终端
    if ((fd = open("/dev/null", O_RDWR)) == -1)
    {
        exit(1);
    }
    dup2(fd, STDIN_FILENO);
    dup2(fd, STDOUT_FILENO);
    dup2(fd, STDERR_FILENO);
    close(fd);

    // 8.屏蔽信号
    signal( SIGINT,  SIG_IGN);
    signal( SIGHUP,  SIG_IGN);
    signal( SIGQUIT, SIG_IGN);
    signal( SIGPIPE, SIG_IGN);
    signal( SIGTTOU, SIG_IGN);
    signal( SIGTTIN, SIG_IGN);
    signal( SIGCHLD, SIG_IGN);
    signal( SIGTERM, SIG_IGN);

    struct sigaction sig;
    sig.sa_handler = SIG_IGN;
    sig.sa_flags = 0;
    sigemptyset( &sig.sa_mask);
    sigaction( SIGHUP,&sig,NULL);

    return 0;
}

相关文章

  • Linux 后台执行代码

  • 13.Linux程序与资源管理

    Linux后台工作管理&:后台执行某个任务 command & bg 将当前任务放到后台++++++ fi...

  • Linux 后台执行 SCP

    有的时候我们需要SCP拷贝的文件很大,不能一直等着,那如何使SCP可以在后台运行呢?下面介绍一个简单的方法,4步可...

  • linux命令后台执行

    nohup & kill -l 查看系统支持的信号kill -l 1 编号1表示信号SIGHU...

  • linux 让gedit在后台执行

    让gedit在后台执行,不要占用当前的shell窗口,可以执行 更多关于linux程序后台执行方法,这一篇文章总结...

  • 应用后台执行代码

    当按下Home键时,应用进入后台,并有5秒时间做保存或清理工作,但使用UIApplication的beginBac...

  • linux中的&&和&,|和||

    在linux中,&和&&,|和||介绍如下: & 表示任务在后台执行,如要在后台运行redis-server,则有...

  • linux

    在linux中,&和&&,|和||介绍如下: & 表示任务在后台执行,如要在后台运行redis-server,则有...

  • linux后台执行程序

    在执行命令后面加一个&号即可实现后台运行程序 $>./eclipse &

  • linux 后台执行进程

    概念: 进程组: 一个或多个进程的集合,每一个进程组都有唯一一个进程组ID,即进程组。 会话器: 一个或多个进程组...

网友评论

      本文标题:Linux 后台执行代码

      本文链接:https://www.haomeiwen.com/subject/vzfadltx.html