Я пишу свою собственную оболочку как часть задания курса. Поэтому мне нужно поддерживать фоновые задания. Я поддерживаю структуры данных для идентификатора задания и фоновых заданий. Но мне нужно также сообщить ядру, что это фоновый процесс, так что существует только один процесс переднего плана терминала. До сих пор я занимаюсь фоновыми заданиями на уровне моей программы.
Что такое вызов функции для регистрации фонового процесса?
Если вы хотите, чтобы процесс не был частью контрольной группы терминала, самый простой способ - просто присвоить ему другую группу .
switch (fork()) { case 0: setpgid(getpid(), getpid()); execvp(...);
Извините, неправильно прочитал ваш вопрос. Вам необходимо использовать функцию tcsetpgrp.
tcsetpgrp
Подробнее см. В разделе «Руководство по библиотеке GNU C»:
http://www.gnu.org/s/libc/manual/html_node/Job-Control.html
В Linux посмотрите на функцию демона:
int daemon(int nochdir, int noclose);
Если в используемой вами системе не существует функции демона, вам нужно использовать setsid и fork.