|
��������
exec: execl, execv, execle, execve, execlp, execvp
���������� �����
���������
int execl (path, arg0, arg1, ..., argn, (char*) 0) char *path, *arg0, *arg1, ..., *argn; int execv (path, argv) char *path, *argv []; int execle (path, arg0, arg1, ..., argn, (char*) 0, envp) char *path, *arg0, *arg1, ..., *argn, *envp []; int execve (path, argv, envp) char *path, *argv [], *envp []; int execlp (file, arg0, arg1, ..., argn, (char*) 0) char *file, *arg0, *arg1, ..., *argn; int execvp (file, argv) char *file, *argv [];
��������
��� ����� ���������� ������ exec ���������� ���������
������� � ����� �������, ������� �������� �� ��������
������������ �����, ����������� � ���������� �����
����������� ������. ����������� ���� ������� �� ��������� [��. a.out(4)], �������� ������ (.text) � ������.
������ ������� �� ������������������ (.data) � �������������������� (.bss) ������. ���� ��������� ����� exec
���������� �������, �� �� �� ����� ������� ����������,
��� ��� ��������� ������� ��� ������� ����� ���������.
��� ������� C-��������� �� �������� ��������� �������:
main (argc, argv, envp) int argc; char **argv, **envp;
��� argc ����� ���������� ����������, argv - ������ ���������� ���������� �� ��������� � envp - ������ ���������� �� ������� ��������, ���������� ���������. ������� ����������, �� �������� �������� argc �� ������ 1, � ������ ������� ������� argv ��������� �� ������� ��������, ���������� ��� ������ ������������ �����.
���������� ��������� ������� ������ exec �������� ��������� �����.
�������� path ��������� �� ���������� ��� ������ ������������ �����.
��� � path, �������� file ��������� ����� ����������� ����, �� ������� ����� ����� ������������ � ���������� ��������� ���������, ���������� ����� ���������� ��������� PATH [��. environ(5)]. ��������� �������������� shell'�� [��. sh(1)].
��������� arg0, arg1, ..., argn - ��� ��������� �� ������� ��������, ������������ �������� �������. ��� ������� �������� ��������� ������ �������� ������ ����������. �� ����������, ��� ������� arg0 ������ �������������� � ��������� �� ������� ��������, ������ path (��� ���������� ���������� path).
������ argv �������� ��������� �� ������� ��������, ������������ �������� �������. ��� ������� �������� ��������� ������ �������� ������ ����������. �� ����������, � argv ������ �������������� ��� ������� ������ �������, ����������� �� ������� ��������, ������ path (��� ���������� ���������� path). �� ��������� ������� ��������� ������� argv ������ ��������� ������ (�������) ���������.
������ envp �������� ��������� �� ������� ��������, ������������ �������� �������. ��� ������� �������� ��������� ������ ��������. �� ��������� ������� ��������� ������� envp ������ ��������� ������ ���������.
����� ������� ���������� ����� ��������� �� ������� ���������� environ, �������� ������� �������� ���
extern char **environ;
���������� ����� ������� ���������� �� ������� ��������, ���������� ��������� ��������. � ������� ���� ���������� (��� � � ������� ��������� envp ������� main) � ����� �������� ������ ����� �������� ������ � ���������, ���������� �� ����������������� �������� ���������� ������ exec. ������� ���� � ���, ��� � ������ ������� execle � execve ��������� ������ �������� �������� ����, � � ��������� ������� ����������� � ���������� ��������.
�����, �������� � ��������� ��������, �������� ��������� � ����� ��������, �� ����������� ���, � ������� ���������� ���� "������� ��� ���������� ������ exec" [��. fcntl(2)]. ���� ���� ������� ��������, �� ��������� ������� ������� � ����� �����������.
������� �� ������� �����������, �� ����������� ����, ��� �������, ������� ��������������� � ��������� ��������, �������� �������������� ������ �������� [��. signal(2)].
� ������, ����� ������� �� ������� ��������������� ������� sigset(2) � ���������� ��� SIG_DFL, SIG_IGN ��� SIG_HOLD, ��� ������� ����������� � ���������� ��������. ������, ���� ������ ��������������, �� ��������������� ������� SIG_DFL � ��� ����������, �� �� ������������ ������� ����� ���� �������������.
���� � ������ ������������ ����� ���������� ��� ���������� ����������������� ����������� ������������� ������������
�������������� ����������� �������� ������ �� ����������� ����� ��������� [��. shmop(2)].
� ������ �������� ��������� ��������������.
����� ����, ����� ������� ��������� � ��������, ���������� exec, ��������� ��������������:
��������� ����� exec ����������� �������� � ���������� ������������, ���� ��������� ���� �� ���� �� ��������� �������:
��. �����
alarm(2), exit(2), fcntl(2), fork(2), nice(2),
ptrace(2), semop(2), shmop(2), signal(2), sigset(2),
times(2), ulimit(2), umask(2), lockf(3C), a.out(4),
environ(5).
sh(1) � ����������� ������������.
�����������
������� �� ���������� ������ exec ��������������� ��
������. � ����� ������ ��������� ����� -1, � ����������
errno ������������� ��� ������.
|