感谢支持
我们一直在努力

后台运行Linux程序的方法

后台运行Linux程序,可以通过crontab设置,这种方法一般用来让一个程序定时运行,也可以通过./test &这样在程序末尾加上一个&使程序在后台运行。


编写代码,下面我将参考httpd写一个程序使其运行不占控制台


#include “detach.h”
void detach(void)
{
        int x;
        int pgrp;


        chdir(“/”);


        if ((x = fork()) > 0)
            exit(0); //exit parent, so we have the child
        else if (x == -1) {
            perror(“fork”);
            fprintf(stderr, “unable to fork new process\n”);
            exit(1);
        }


        raise(SIGSTOP);
/* setsid – run a program in a new session*/
        if ((pgrp = setsid()) == -1) {
            perror(“setsid”);
            fprintf(stderr, “setsid failed\n”);
            exit(1);
        }


        /* close out the standard file descriptors */
        if (freopen(“/dev/null”, “r”, stdin) == NULL) {
            fprintf(stderr, “unable to replace stdin with /dev/null:\n”);
            /* continue anyhow — note we can’t close out descriptor 0 because we
             * have nothing to replace it with, and if we didn’t have a descriptor
             * 0 the next file would be created with that value … leading to
             * havoc.
             */
        }
        if (freopen(“/dev/null”, “w”, stdout) == NULL) {
            fprintf(stderr, “unable to replace stdout with /dev/null: \n”);
        }
        /* stderr is a tricky one, we really want it to be the error_log,
         * but we haven’t opened that yet.  So leave it alone for now and it’ll
         * be reopened moments later.
         */
}

赞(0) 打赏
转载请注明出处:服务器评测 » 后台运行Linux程序的方法
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏