[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Использование execl(2) - Пример

Эта программа демонстрирует использование системного вызова execl(2).
   9-10   Системный вызов execl(2) использует список параметров.

          newpgm    имя программы, которую следует исполнить

          newpgm    значение argv[0] новой программы

          parm1     значение argv[1] новой программы

          parm2     значение argv[2] новой программы

          parm3     значение argv[3] новой программы

          (char *)0 конец списка  параметров. Он необходим, потому что
                    execl(2) может  быть передано  произвольное  число
                    параметров.

   12     Исходная программа  exec1 распечатает  сообщение об  ошибке,
          только  если   execl(2)  завершится   неудачно.  Это   может
          произойти, например,  если требуемая программа не может быть
          исполнена или  был передан  неправильный параметр, такой как
          недопустимый указатель.

Когда исполняется newpgm, из параметров execl(2) создается новый
список argv[]. Переменные среды исполнения наследуются от вызывающего
процесса.
Файл: exec1.c
                   ИСПОЛЬЗОВАНИЕ execl(2) - ПРИМЕР

 1 #include <unistd.h>
 2 #include <stdio.h>
 3
 4 main()
 5 {
 6
 7     printf("this is the original program\n");
 8
 9     execl("newpgm", "newpgm", "parm1", "parm2",
10             "parm3", (char *) 0);
11
12     perror("This line should never get printed\n");
13 }

$ exec1
this is the original program
My input parameters(argv) are:
     0: 'newpgm'
     1: 'parm1'
     2: 'parm2'
     3: 'parm3'

My environment variables are:
    HOME=/uxm2/jrs
    LOGNAME=jrs
    MAIL=/var/mail/jrs
    PATH=/usr/bin:/usr/lbin/:/uxm2/jrs/bin:.
    TERM=5420
    TZ=EST5EDT