|
���
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.
|