setsid

SETSID(2)       Ð ÑководÑÑво пÑогÑаммиÑÑа Linux       SETSID(2)



ÐÐЯ
       setsid - ÑÐ¾Ð·Ð´Ð°ÐµÑ ÑÐµÐ°Ð½Ñ Ð¸ ÑÑÑанавливаеÑ
       иденÑиÑикаÑÐ¾Ñ Ð³ÑÑÐ¿Ð¿Ñ Ð¿ÑоÑеÑÑа

ÐÐÐÐÐ
       #include <unistd.h>

       pid_t setsid(void);

ÐÐÐСÐÐÐÐ
       ÐÑзов setsid() ÑоздаÑÑ Ð½Ð¾Ð²Ñй ÑеанÑ, еÑли
       вÑзÑваÑÑий пÑоÑеÑÑ Ð½Ðµ ÑвлÑеÑÑÑ Ð»Ð¸Ð´ÐµÑом гÑÑппÑ
       пÑоÑеÑÑов. ÐÑзÑваÑÑий пÑоÑеÑÑ ÑÑановиÑÑÑ
       лидеÑом нового ÑеанÑа (Ñо еÑÑÑ, его ID ÑеанÑа
       ÑÑановиÑÑÑ ÑавнÑм ID Ñамого пÑоÑеÑÑа).
       ÐÑзÑваÑÑий пÑоÑеÑÑ Ñакже ÑÑановиÑÑÑ Ð»Ð¸Ð´ÐµÑом
       гÑÑÐ¿Ð¿Ñ Ð¿ÑоÑеÑÑов новой гÑÑÐ¿Ð¿Ñ Ð¿ÑоÑеÑÑов в
       ÑеанÑе (Ñо еÑÑÑ, его ID гÑÑÐ¿Ð¿Ñ Ð¿ÑоÑеÑÑов
       ÑÑановиÑÑÑ ÑавнÑм ID Ñамого пÑоÑеÑÑа).

       ÐÑзÑваÑÑий пÑоÑеÑÑ Ð±ÑÐ´ÐµÑ ÐµÐ´Ð¸Ð½ÑÑвеннÑм в новой
       гÑÑппе пÑоÑеÑÑов и новом ÑеанÑе.

       ÐзнаÑалÑно, новÑй ÑÐµÐ°Ð½Ñ Ð½Ðµ имееÑ
       ÑпÑавлÑÑÑего ÑеÑминала. Ð Ñом, как ÑеанÑ
       полÑÑÐ°ÐµÑ ÑпÑавлÑÑÑий ÑеÑминал, ÑмоÑÑиÑе в
       credentials(7).

ÐÐÐÐÐ ÐЩÐÐÐÐÐ ÐÐÐЧÐÐÐÐ
       ÐÑи ÑÑпеÑном вÑполнении возвÑаÑаеÑÑÑ
       иденÑиÑикаÑÐ¾Ñ (нового) ÑеанÑа вÑзÑваÑÑего
       пÑоÑеÑÑа. Ð ÑлÑÑае оÑибки возвÑаÑаеÑÑÑ (pid_t) -1,
       а errno ÑÑÑанавливаеÑÑÑ Ð² ÑооÑвеÑÑÑвÑÑÑее
       знаÑение.

ÐШÐÐÐÐ
       EPERM  ÐденÑиÑикаÑÐ¾Ñ Ð³ÑÑÐ¿Ð¿Ñ Ð¿ÑоÑеÑÑов лÑбого
              пÑоÑеÑÑа Ñавен PID вÑзÑваÑÑего пÑоÑеÑÑа. Ð
              ÑÑом ÑлÑÑае, в ÑаÑÑноÑÑи, setsid() завеÑÑаеÑÑÑ
              неÑдаÑно, еÑли вÑзÑваÑÑий пÑоÑеÑÑ Ñже
              ÑвлÑеÑÑÑ Ð»Ð¸Ð´ÐµÑом гÑÑÐ¿Ð¿Ñ Ð¿ÑоÑеÑÑов.

СÐÐТÐÐТСТÐÐРСТÐÐÐÐРТÐÐ
       POSIX.1-2001, POSIX.1-2008, SVr4.

ÐÐÐÐЧÐÐÐЯ
       ÐоÑомок, ÑоздаваемÑй Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ fork(2),
       наÑледÑÐµÑ ID ÑеанÑа Ñвоего ÑодиÑелÑ.
       ÐденÑиÑикаÑÐ¾Ñ ÑеанÑа ÑоÑÑанÑеÑÑÑ Ð¿Ñи вÑзове
       execve(2).

       ÐÐ¸Ð´ÐµÑ Ð³ÑÑÐ¿Ð¿Ñ Ð¿ÑоÑеÑÑов â ÑÑо пÑоÑеÑÑ,
       иденÑиÑикаÑÐ¾Ñ Ð³ÑÑÐ¿Ð¿Ñ Ð¿ÑоÑеÑÑов коÑоÑого
       Ñавен иденÑиÑикаÑоÑÑ Ñамого пÑоÑеÑÑа (PID).
       ÐÑказ лидеÑа гÑÑÐ¿Ð¿Ñ Ð¿ÑоÑеÑÑов вÑполнÑÑÑ setsid()
       пÑедоÑвÑаÑÐ°ÐµÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ñого, ÑÑо Ñам лидеÑ
       гÑÑÐ¿Ð¿Ñ Ð¿ÑоÑеÑÑов пеÑемеÑÑиÑÑÑ Ð² новÑй ÑеанÑ, в
       Ñо вÑÐµÐ¼Ñ ÐºÐ°Ðº дÑÑгие пÑоÑеÑÑÑ Ð² гÑÑппе оÑÑанÑÑÑÑ
       в пеÑвонаÑалÑном ÑеанÑе; ÑÑо поломало бÑ
       жÑÑÑкÑÑ Ð´Ð²ÑÑÑÑовневÑÑ Ð¸ÐµÑаÑÑÐ¸Ñ ÑÑенаÑиев и гÑÑпп
       пÑоÑеÑÑов. ÐÐ»Ñ Ñого, ÑÑÐ¾Ð±Ñ setsid() вÑполнилÑÑ
       ÑÑпеÑно, вÑзовиÑе fork(2) и _exit(2), а заÑем в
       доÑеÑнем пÑоÑеÑÑе вÑзовиÑе setsid().

       ÐÑли ÑÐµÐ°Ð½Ñ Ð¸Ð¼ÐµÐµÑ ÑпÑавлÑÑÑий ÑеÑминал, Ñ
       коÑоÑого не ÑÑÑановлен Ñлаг CLOCAL и
       Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð·Ð°Ð²Ð¸Ñание (hangup) ÑеÑминала, Ñо
       лидеÑÑ ÑеанÑа поÑÑлаеÑÑÑ SIGHUP.

       ÐÑли завеÑÑаеÑÑÑ Ð¿ÑоÑеÑÑ, коÑоÑÑй ÑвлÑеÑÑÑ
       лидеÑом ÑеанÑа, Ñо Ñигнал SIGHUP поÑÑлаеÑÑÑ
       ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñ Ð¿ÑоÑеÑÑÑ Ð² пÑиоÑиÑеÑной (foreground)
       гÑÑппе пÑоÑеÑÑов ÑпÑавлÑÑÑего ÑеÑминала.

СÐÐТРÐТРТÐÐÐÐ
       setsid(1), getsid(2), setpgid(2), setpgrp(2), tcgetsid(3),
       credentials(7)



Linux                             2015-08-08                         SETSID(2)