[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Исполняемая программа - Пример

Эта программа будет использоваться для демонстрации системных вызовов
семейства exec(2) в последующих примерах. Эта программа распечатывает
свои аргументы командной строки и переменные среды исполнения.
   12-13  Этот цикл распечатывает аргументы командной строки.

   16-17  Этот цикл распечатывает переменные среды исполнения.

Shell, как Си-программа, использует exec(2) для исполнения программ.
Shell читает вводимую с терминала командную строку, разделяет ее на
аргументы и вызывает exec(2) с соответствующими параметрами. Первое
слово командной строки - это имя программы, которую нужно исполнить.
Переменные среды - это строки, состоящие из имени, за которым следует
знак равенства и строка-значение. На уровне интерпретатора shell
необходимо выполнить команду export, чтобы значение shell-переменной
стало доступно порожденным процессам. На программном уровне,
putenv(3C) добавляет переменную к среде исполнения процесса, а
getenv(3) ищет значение переменной среды.
Файл: newpgm.c
                    ИСПОЛНЯЕМАЯ ПРОГРАММА - ПРИМЕР

 1 #include <stdio.h>
 2 extern char **environ;
 3
 4 /* program to be exec(2)'ed */
 5
 6 main(int argc, char *argv[ ])
 7 {
 8     char **p;
 9         int n;
10
11     printf("My input parameters(argv) are:\n");
12         for (n = 0; n < argc; n++)
13         printf("    %2d: '%s'\n", n, argv[n]);
14
15     printf("\nMy environment variables are:\n");
16         for (p = environ; *p != 0; p++)
17         printf("    %s\n", *p);
18 }

$ newpgm parm1 parm2 parm3
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