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

Эта программа исполняет новую программу с помощью execve(2)
9-13 nenv[] - список указателей на новые значения переменных среды
исполнения. Он имеет такую же форму, как и nargv[]. Каждый элемент
nenv[] указывает на строку, похожую на оператор присваивания shell:
              "имя=значение"

17   Третий параметр execve(2) - это адрес списка новых переменных
среды.
18-19     Закомментирован вызов execle(2). Он приведет к тому же
результату.
Файл: exec3.c
                   ИСПОЛЬЗОВАНИЕ execve(2) - ПРИМЕР

 1 #include <unistd.h>
 2 #include <stdio.h>
 3
 4 main()
 5 {
 6     char *nargv[ ] = {
 7                 "newpgm", "parm1", "parm2", "parm3",
 8         (char *) 0 };
 9     char *nenv[ ]  = {
10                 "NAME=value",
11         "nextname=nextvalue",
12         "HOME=/xyz",
13         (char *) 0 };
14
15     printf("this is the original program\n");
16
17     execve("newpgm", nargv, nenv);
18         /* execle("newpgm", "newpgm", "parm1", "parm2",
19         "parm3", (char *) 0, nenv); */
20
21     perror("This line should never get printed\n");
22 }

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

My environment variables are:
    NAME=value
    nextname=nextvalue
    HOME=/xyz