ÈÌß
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âèé:
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:
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.