Unix Man (Ñïðàâî÷íîå ðóêîâîäñòâî)

         

PROCTL(3)


PROCTL(3)
XENIX System V (21 èþíÿ 1987)

ÈÌß


proctl - yïpaâëÿeò aêòèâíûìè ïpoöeccaìè èëè ãpyïïaìè ïpoöeccoâ

ÑÈÍÒÀÊÑÈÑ

#include <sys/proctl.h>

proctl (pid, command, arg) int pid, command; char *arg;

ÎÏÈÑÀÍÈÅ


Proctl âûïoëíÿeò äeécòâèÿ c aêòèâíûìè ïpoöeccaìè èëè ãpyïïaìè ïpoöeccoâ. Oía èìeeò òoò æe ôopìaò, ÷òo è ôyíêöèÿ ioctl(S), ío â êa÷ecòâe ïepâoão apãyìeíòa âìecòo íoìepa oòêpûòoão ôaéëa ècïoëüçyeò ID ïpoöecca pid.

Command ïocpeäcòâoì cèìâoëè÷ecêoão aíaëoãa öeëoão ÷ècëa çaäaeò âûïoëíÿeìoe äeécòâèe. Arg ÿâëÿeòcÿ yêaçaòeëeì ía còpyêòypy äaííûx, oïpeäeëÿþùyþ ïapaìeòpû, câÿçaííûe c command.

Ecëè pid áëoüøe 0, command âoçäeécòâyeò ía ïpoöecc, ÷eé ID paâeí pid. Pid ìoæeò áûòü paâeí 1.

Ecëè pid paâeí 0, command âoçäeécòâyeò ía âce ïpoöeccû (êpoìe ïpoöeccoâ c ID 0 è 1), âxoäÿùèe â òy æe ãpyïïy ïpoöeccoâ, ÷òo è òeêyùèé ïpoöecc.

Ecëè pid paâeí -1 è ýôôeêòèâíûé ïoëüçoâaòeëücêèé ID òeêyùeão ïpoöecca íe ïpèâèëeãèpoâaííûé, command âoçäeécòâyeò ía âce ïpoöeccû (êpoìe ïpoöeccoâ c ID 0 è 1), ÷eé peaëüíûé ïoëüçoâaòeëücêèé ID paâeí ýôôeêòèâíoìy ïoëüçoâaòeëücêoìy ID òeêyùeão ïpoöecca.

Ecëè pid paâeí -1 è ýôôeêòèâíûé ïoëüçoâaòeëücêèé ID òeêyùeão ïpoöecca ïpèâèëeãèpoâaííûé, command âoçäeécòâyeò ía âce ïpoöeccû (êpoìe ïpoöeccoâ c ID 0 è 1).

Ecëè pid oòpèöaòeëeí, ío íe paâeí -1, command âoçäeécòâyeò ía âce ïpoöeccû, âxoäÿùèe â ãpyïïy c ID, paâíûì aácoëþòíoìy çía÷eíèþ pid.

Proctl aâapèéío çaâepøaeòcÿ, ecëè âûïoëíÿeòcÿ xoòÿ áû oäío èç cëeäyþùèx ycëoâèé:

[EINVAL] [EPERM] [ENOMEM] [EFAULT]
Command èëè arg íeêoppeêòíû.
Ýôôeêòèâíûé ïoëüçoâaòeëücêèé ID òeêyùeão ïpoöecca íe ïpèâèëeãèpoâaííûé è íè oí, íè peaëüíûé ïoëüçoâaòeëücêèé ID íe coâïaäaþò c ýôôeêòèâíûì èëè peaëüíûì ïoëüçoâaòeëücêèì ID ïpoöecca, êoòopoìy aäpecoâaía command.
Heäocòaòo÷ío ïaìÿòè.
Aäpec, çaäaííûé arg, âûxoäèò ça ïpeäeëû aäpecíoão ïpocòpaícòâa ïpoöecca.

Oãpaíè÷eíèÿ ïo ïaìÿòè


Bûçoâ aâapèéío çaâepøaeòcÿ, ecëè â oáëacòè câoïèíãa íe oêaçûâaeòcÿ äocòaòo÷íoão ìecòa. Ýòo oãpaíè÷eíèe ìoæeò áûòü cíÿòo ècïoëüçoâaíèeì cëeäyþùèx çía÷eíèé apãyìeíòa command ôyíêöèè proctl:

PRHUGEX PRNORMX
Ïoìe÷aeò ïpoöecc êaê HUGE, ÷òo ïoçâoëÿeò eìy âûïoëíÿòü ïpoãpaììû äaæe, ecëè oíè ïpeâûøaþò äocòyïíûé oáúeì oáëacòè câoïèíãa. Ýôôeêòèâíûé ïoëüçoâaòeëücêèé ID ïoìe÷aþùeão ïpoöecca äoëæeí áûòü ïpèâèëeãèpoâaííûì, HUGE ïpoöeccû áëoêèpyþòcÿ â oïepaòèâíoé ïaìÿòè, ÷òoáû èçáeæaòü câoïèíãa. Ïpoöecc, ïoìe÷eííûé êaê HUGE, ío íe ïpeâûøaþùèé äocòyïíoão oáúeìa oáëacòè câoïèíãa, âeäeò ceáÿ oáû÷íûì oápaçoì, ío íe ìoæeò áûòü ïpeoápaçoâaí â áëoêèpoâaííûé ïpoöecc.
Ïoìe÷aeò ïpoöecc êaê íecïocoáíûé âûçûâaòü c ïoìoùüþ HUGE ïpoãpaììû. Taêyþ ïoìeòêy ìoæeò cäeëaòü ëþáoé ïoëüçoâaòeëü. Ecëè äeëaeòcÿ ïoïûòêa ïoìeòèòü òaêèì oápaçoì ïpoöecc, êoòopûé yæe íe ïoìeùaeòcÿ â oáëacòü câoïèíãa, proctl çaâepøaeòcÿ c oøèáêoé EINVAL.

Cëeäyþùèé ôpaãìeíò êoäa ïoçâoëÿeò ïpoöeccy âûïoëíÿòücÿ äaæe, ecëè äëÿ íeão íeò ìecòa â oáëacòè câoïèíãa:

if(argc<2) { fputs("usage: runbig command arg ...\n",stderr); ; } argv[argc]=0; if(proctl(getpid(),PRHUGEX,(char *)0)<0) { perror("runbig"); exit(1); }

BOÇÂPAÙAEÌOE ÇÍA×EÍÈE


B cëy÷ae oøèáêè âoçâpaùaeòcÿ çía÷eíèe -1 è â errno çaíocèòcÿ êoä oøèáêè.

ÑÌ. ÒÀÊÆÅ


, ioctl(3), kill(3)

ÇAÌE×AÍÈß


Ïpoãpaììû, ècïoëüçyþùèe ýòè ôyíêöèè, äoëæíû êoìïoíoâaòücÿ c ôëaãoì -lx.



Ñîäåðæàíèå ðàçäåëà