[<<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