UNIX Системный вызов для регистрации фонового процесса - PullRequest
1 голос
/ 02 октября 2009

Я пишу свою собственную оболочку как часть задания курса. Поэтому мне нужно поддерживать фоновые задания. Я поддерживаю структуры данных для идентификатора задания и фоновых заданий. Но мне нужно также сообщить ядру, что это фоновый процесс, так что существует только один процесс переднего плана терминала. До сих пор я занимаюсь фоновыми заданиями на уровне моей программы.

Что такое вызов функции для регистрации фонового процесса?

Ответы [ 3 ]

2 голосов
/ 04 октября 2009

Если вы хотите, чтобы процесс не был частью контрольной группы терминала, самый простой способ - просто присвоить ему другую группу .

switch (fork()) {
    case 0:
        setpgid(getpid(), getpid());
        execvp(...);
1 голос
/ 03 октября 2009

Извините, неправильно прочитал ваш вопрос. Вам необходимо использовать функцию tcsetpgrp.

Подробнее см. В разделе «Руководство по библиотеке GNU C»:

http://www.gnu.org/s/libc/manual/html_node/Job-Control.html

1 голос
/ 02 октября 2009

В Linux посмотрите на функцию демона:

 int daemon(int nochdir, int noclose);

Если в используемой вами системе не существует функции демона, вам нужно использовать setsid и fork.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...