LINUX.ORG.RU

хороший вопрос :)
Освободить от чего? или от кого??
А чем ты её захватывал? Или ты хочешь освободить пленную консоль,
захваченную злобными хакерами? :) Шутка конечно.

Имхо, слишком плохо задал вопрос.

RomanU
()
Ответ на: комментарий от RomanU

2RomanU: видать такого не делал, если спрашиваешь.

я пишу прогу, естественно когда я ее запускаю, она висит в консоли.
но она может освободить консоль после своего запуска.
я уже не помню это функцию... вот и спрашиваю здесь.

nial
() автор топика
Ответ на: комментарий от nial

#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <syslog.h>
#include <string.h>

int main(void) {
        
        /* Our process ID and Session ID */
        pid_t pid, sid;
        
        /* Fork off the parent process */
        pid = fork();
        if (pid < 0) {
                exit(EXIT_FAILURE);
        }
        /* If we got a good PID, then
           we can exit the parent process. */
        if (pid > 0) {
                exit(EXIT_SUCCESS);
        }

        /* Change the file mode mask */
        umask(0);
                
        /* Open any logs here */        
                
        /* Create a new SID for the child process */
        sid = setsid();
        if (sid < 0) {
                /* Log the failure */
                exit(EXIT_FAILURE);
        }
        

        
        /* Change the current working directory */
        if ((chdir("/")) < 0) {
                /* Log the failure */
                exit(EXIT_FAILURE);
        }
        
        /* Close out the standard file descriptors */
        close(STDIN_FILENO);
        close(STDOUT_FILENO);
        close(STDERR_FILENO);
        
        /* Daemon-specific initialization goes here */
        
        /* The Big Loop */
        while (1) {
           /* Do some task here ... */
           
           sleep(30); /* wait 30 seconds */
        }
   exit(EXIT_SUCCESS);
}

RomanU
()
Ответ на: комментарий от nial

#include <unistd.h>

int daemon(int nochdir, int noclose);

> Функция daemon() необходима для того, чтобы отключить программу от управляющего
> терминала и запустить ее как системный демон.
> Если аргумент nochdir не нулевой, то daemon() изменяет текущий рабочи й каталог
> на корневой (/).
> Если аргумент noclose не нулевой, то daemon() перенаправляет стандартный
> поток ввода/вывода ошибок в /dev/null.

из справки Linux man 3 daemon. В самом деле эта функция делает примерно то же, что и пример выше.

Spectrum
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.