Как делают меня должностное лицо () процесс в фоновом режиме в C?

Если Вы запускаете с Cincom Smalltalk, существует тонна доступного учебного материала:

- учебные руководства - ежедневно демонстрируют на экране - видео - еженедельный подкаст

, можно найти скринкасты, видео, и подкасты на iTunes - просто ищут "Smalltalk" в разделе подкаста.

13
задан Vlad the Impala 24 October 2009 в 18:54
поделиться

4 ответа

Перехватите SIGCHLD и в обработчике вызовите wait ().

Некоторые разновидности Posix (я думаю * BSD, но не цитируйте меня по этому поводу), если вы игнорируете SIGCHLD , ядро ​​автоматически очистит процесс зомби (это то, что вы видите в ps). Это приятная функция, но ее нельзя переносить.

6
ответ дан 2 December 2019 в 01:21
поделиться

Я думаю, что вы пытаетесь создать процесс-демон. Прочтите эту ссылку в Википедии для объяснения.

Пример (из книги Стивена «Расширенное программирование в среде Unix») для превращения процесса в демон:

#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h> 

int daemon_int(void)
{
    pid_t pid;
    if ((pid = fork()) < 0)
        return (-1) ;
    else if (pid != 0)
       exit(0) ; /* The parent process exits */
    setsid() ;   /* become session leader */
    chdir("/") ; /* change the working dir */
    umask(0) ;   /* clear out the file mode creation mask */
    return(0) ;
}

Конечно, это предполагает использование ОС, подобной Unix. .

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

5
ответ дан 2 December 2019 в 01:21
поделиться

waitpid (-1, & status, WNOHANG) может делать то, что вам нужно: он должен немедленно вернуться, если ни один дочерний процесс не завершился. Кроме того, вы можете прослушивать сигнал SIGCHLD.

0
ответ дан 2 December 2019 в 01:21
поделиться

Форк для создания фонового потока, а затем выполнение. Посмотрите на этот сайт обманчивый вопрос: Можем ли мы запустить фоновый процесс, используя exec () с аргументом &?

-1
ответ дан 2 December 2019 в 01:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: