Системное программирование в UNIX средствами Free Pascal

         

Если передать вызову getsid значение


uses stdio;
function getsid(pid:longint):longint;
Если передать вызову getsid значение 0, то он вернет идентификатор сеанса вызывающего процесса, в противном случае возвращается идентификатор сеанса процесса, заданного идентификатором pid.
Понятие сеанса полезно при работе с фоновыми процессами или процессами-демонами (daemon processes). Процессом-демоном называется просто процесс, не имеющий управляющего терминала. Примером такого процесса является процесс cron, запускающий команды в заданное время. Демон может задать для себя сеанс без управляющего терминала, переместившись в другой сеанс при помощи системного вызова setsid.


uses stdio;
function setsid:longint;cdecl;
Если вызывающий процесс не является лидером группы процессов, то создается новая группа процессов и новый сеанс, и идентификатор вызывающего процесса станет идентификатором созданного сеанса. Он также не будет иметь управляющего терминала. Процесс-демон теперь будет находиться в странном состоянии, так как он будет единственным процессом в группе процессов, содержащейся в новом сеансе, а его идентификатор процесса
pid – также идентификатором группы и сеанса.
Функция setsid может завершиться неудачей и возвратит значение -1, если вызывающий процесс уже является лидером группы.

Содержание раздела