Описание функций Си



         

Execl - часть 3


envvar = value , где

envvar- имя переменной среды, а value- значение символьной строки, которая присваивается каждой переменной envvar. Последним элементом в массиве envp[] является адресный нуль NULL. Когда значени- ем envp[0] является NULL, "дочерний" процесс на- следует назначения среды "родительского" процесса.

Общая длина arg0+ arg1+...+argn (или arg[0]+ arg[1]+...+arg[n]), включая пробелы, разделяющие аргументы, должна быть меньше 128 байтов. Нулевые окончания не считаются. При вызове функции exec... любые открытые файлы остаются открытыми и в "до- чернем" процессе.

Возвращаемое При успешном завершении функции exec... не возвра- значение щают никакого значения. При возникновении ошибки функции exec... возвращают значение -1, а глобаль- ная переменная errno получает одно из следующих значений:

E2BIG - Слишком длинный список аргументов; EACCES - Отказ доступа; EMFILE - Слишком много открытых файлов; ENOENT - Маршрут доступа (PATH) или имя файла не найдены; ENOEXEC - Ошибка формата EXEC; ENOMEM - Не хватает памяти.

Переносимость exec... уникальна для DOS.

Смотрите также: ..,

Пример:

/* CHILD.C Программа для всех примеров */

#include

#include

main(int argc, char * argv[]) { int i; printf("Запущен дочерний процесс ...\n"); printf("%s\n",getenv("PATH")); for (i=0; i

#include

#include

#include

int main(int argc,char *argv[]) { int loop; printf("%s работает...\n\n",argv[0]); if(argc == 1) /* есть ли еще аргументы */ { printf("%s запускает сама себя опять...\n",argv[0]); execl(argv[0],argv[0],"ONE","TWO","THREE",NULL); perror("EXEC:"); exit(1); } printf("%s вызвана с аргументами:\n",argv[0]); for(loop = 1;loop

#include

#include

#include

#include

int main(int argc,char *argv[]) { int loop; char *new_env[] = {"TELYING",NULL};

printf("%s работает...\n\n",argv[0]); if(argc == 1) /* есть ли еще аргументы */ { printf("%s запускает сама себя опять...\n",argv[0]); execle(argv[0],argv[0],"ONE","TWO","THREE",NULL,new_env); perror("EXEC:"); exit(1); } printf("%s вызвана с аргументами:\n",argv[0]); for(loop = 1;loop




Содержание  Назад  Вперед