|
éíñ
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] | Command ÉÌÉ arg ÎeËoppeËÔÎÙ. |
---|---|
[EPERM] | üÆÆ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. |
[ENOMEM] | HeÄocÔaÔoÞÎo ÐaÍÑÔÉ. |
[EFAULT] | 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× exec(3) 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 | ð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. |
---|---|
PRNORMX | ðoÍeÞaeÔ ÐpoÃecc ËaË ÎecÐocoÂÎÙÊ ×ÙÚÙ×aÔØ c ÐoÍoÝØÀ exec(3) 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); exit(2); } 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ÛÉÂËÉ.
óí. ôáëöå
exec(3), ioctl(3), kill(3)
úAíEþAîéñ
ðpoÇpaÍÍÙ, ÉcÐoÌØÚyÀÝÉe ÜÔÉ ÆyÎËÃÉÉ, ÄoÌÖÎÙ ËoÍÐoÎo×aÔØcÑ c
ÆÌaÇoÍ -lx.
|