Server for Information Technologies ������ ��������������
������� �������������� ����������
(095) 932-9212, 932-9213, 939-0783
E-mail: [email protected]
������ �������� ����(!) ������������� ���������� CIT Forum CD-ROM

EXEC(2)

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

���� � ������ ������������ ����� ���������� ��� ���������� ����������������� ����������� ������������� ������������

[��. chmod(2)], �� ����������� ������������� ������������ ������ �������� ��������������� ������ �������������� ��������� ������ ������������ �����. ����������, ���� � ������ ������������ ����� ���������� ��� ���������� ����������������� ����������� ������������� ������, �� ����������� ������������� ������ ������ �������� ��������������� ������ �������������� ������ ������ ������������ �����. �������� ������������� ������������ � �������� ������������� ������ ������ �������� ����������� � ���������� ��������.

�������������� ����������� �������� ������ �� ����������� ����� ��������� [��. shmop(2)].

� ������ �������� ��������� ��������������.

����� ����, ����� ������� ��������� � ��������, ���������� exec, ��������� ��������������:

  1. �������� �������� � ���������� [��. nice(2)].
  2. ������������� ��������.
  3. ������������� ������������� ��������.
  4. ������������� ������ ���������.
  5. semadj �������� [��. semop(2)].
  6. ������������� ������ ��������� [��. exit(2)].
  7. ����� ����������� [��. ptrace(2)].
  8. �����, ���������� �� ������������ ���������� [��. alarm(2)].
  9. ������� ������� �������.
  10. �������� �������.
  11. ����� ������ �������� ������ [��. umask(2)].
  12. ����������� �� ������ ����� [��. ulimit(2)].
  13. �������� �������, ������������ ��� ������������ ����� �������� (tms_utime, tms_stime, tms_cutime, tms_cstime) [��. times(2)].
  14. ���������� ������� � ��������� ������
    [��. fcntl(2)lockf(3C)].

��������� ����� exec ����������� �������� � ���������� ������������, ���� ��������� ���� �� ���� �� ��������� �������:

[ENOENT]
��������� �������� ������ ������������ ����� �� ����������.
[ENOTDIR]
��������� �������� ������ ������������ ����� �� �������� ���������.
[EACCES]
���� �� ���������, ������������� � �������� ������ ������������ �����, �� �������� ��� ���������.
[EACCES]
����� ����������� ���� �� �������� ������� ������.
[EACCES]
��� ���� �� ���������� ������ �����.
[ENOEXEC]
����� �� ���������� ������ ����� ����, �� ��� ��������� �� ���������� � ����������� ����������� ����� [��. a.out(4)].
[ETXTBSY]
����� ����������� ���� � ��������� ������ ������ ��� ������ ��������� ���������.
[ENOMEM]
����� ������� ������� ������ ������, ��� ��������� ��������� ����������� MAXMEM.
[E2BIG]
��������� ����� ������ ���������� ��������� ��������� �����������, ������ 5120 ����.
[EFAULT]
����������� ��������� ������������.
[EFAULT]
������������ ������ � �������� ����������.
[EAGAIN]
�� ������� ������.
[ELIBACC]
� ��������� ����������� ���������� �� �������� ������ �� ����������.
[ELIBEXEC]
������� ��������������� ��������� ����������� ����������.
[EINTR]
�� ����� ���������� ������ exec ���������� ������.
[ENOLINK]
�������� path ��������� �� ��������� ���������, ����� � ������� � ������ ������ ���.
[EMULTIHOP] ���������� path ������� ������������� ��������� � ��������� �����������.

��. �����
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 ������������� ��� ������.
Comments: [email protected]
Designed by Andrey Novikov
Copyright © CIT