Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

spawnl-spawnvpe

[ Оглавление ]
               SPAWNL-SPAWNVPE
            
               #include <stdio.h>
               #include <process.h>
            
         int spawnl(modeflag,pathname,arg0,arg1...,argn,NULL);
         int spawnle(modeflag,pathname,arg0,arg1...,argn,NULL,envp);
         int spawnlp(modeflag,pathname,arg0,arg1...,argn,NULL);
         int spawnlpe(modeflag,pathname,arg0,arg1...,argn,NULL,envp);
         int spawnv(modeflag,pathname,argv);
         int spawnve(modeflag,pathname,argv,envp);
         int spawnvp(modeflag,pathname,argv);
         int spawnvpe(modeflag,pathname,argv,envp);
            
         int modeflag;               режим выполнения parent-процесса
         char *pathname;             path-имя выполняемого файла
         char *arg0,*arg1...,*argn;  список указателей на аргументы
         char *argv[];               массив указателей на аргументы
         char *envp[];               массив указателей на установлен-
                                     ное окружение
                                
               Описание.
                                 
               Функции  spawn создают и выполняют новый child-процесс. Для
         загрузки и выполнения child-процесса должно быть доступно  доста-
         точно  памяти.  Аргумент modeflag определяет действия, выбираемые
         parent-процессом перед и на протяжении spawn. Следующие  значения
         modeflag объявлены в <process.h>
                           
         Значение                        Его смысл
                           
         P_WAIT               Приостанавливает  parent-процесс,  пока
                              не завершится child-процесс.
                           
         P_NOWAIT             Продолжает  выполнение  parent-процесса,
                              параллельного с child-процессом.
          
         P_OVERLAY            Parent-процесс  перекрывается с  child-
                              процессом; parent-процесс  уничтожается
                              (то же действие, что и при вызовах exec)
            
               Могут  использоваться  только  значения modeflag, такие как
         P_WAIT и P_OVERLAY. Значение P_NOWAIT сохраняется  для  возможной
         будущей реализации. Если используется P_NOWAIT, возвращается зна-
         чение  ошибки. Аргумент pathname определяет файл, выполняемый как
         child-процесс. Pathname может определять полный path (из  корня),
         часть path (из текущего рабочего директория), или просто имя фай-
         ла.


               
                
               Если  pathname не имеет расширения для имени файла или если
         оно не заканчивается точкой (.), тогда функция spawn устанавлива-
         ет расширение .EXE. Если pathname имеет расширение, то  использу-
         ется  только  это расширение. Если pathname заканчивается точкой,
         spawn  осуществляет  поиск  pathname  без  расширения.  Процедуры
         execlp, execlpe, execvpe осуществляют поиск для pathname (исполь-
         зуя те же процедуры) в директориях, определенных переменной окру-
         жения PATH.
               Аргументы  для  нового  процесса передаются как аргументы в
         вызове spawn, задавая один или  более  указателей  на  символьные
         строки.  Эти  символьные  строки  образуют  список аргументов для
         child-процесса. Общая длина строк, образующих  список  аргументов
         для  нового процесса, не может превышать 128 байтов. Нулевой сим-
         вол окончания '\0'для каждой строки в эту длину не засчитывается,
         а символы пробела (автоматически вставляемые для аргументов)-зас-
         читываются.
               Указатели аргументов могут передаваться как отдельные аргу-
         менты (в execl, execle, execlp, execlpe) или как массив  указате-
         лей  (в execv, execve, execvp, execvpe). По крайней мере один ар-
         гумент - arg0 или argv[0] - может передаваться к  child-процессу.
         По  условию  этот  аргумент  является  копией аргумента pathname.
         (Другое значение ошибки не вырабатывается).  В  версиях  MS  DOS,
         ранних от 3.0, передаваемое значение arg0 или argv[0] не доступно
         для использования в child-процессе. Однако, для версий MS DOS 3.0
         и старше pathname доступно через arg0 или argv[0].
               Вызовы  execl,  execle, execlp, execlpe обычно используются
         тогда, когда количество  аргументов  известно  заранее.  Аргумент
         arg0 обычно является указателем на pathname. Аргументы от arg1 до
         argn  являются указателями на символьные строки, образующие новый
         список аргументов. NULL-указатель, идущий за аргументом argn, оп-
         ределяет конец списка аргументов.
               Вызовы execv, execve, execvp, execvpe  используются,  когда
         число  аргументов для нового процесса является переменным. Указа-
         тели на аргументы пересылаются как массив argv. Аргумент  argv[0]
         обычно  является  указателем на pathname. Аргументы от argv[1] до
         argv[n] являются указателями на символьные строки, образующие но-
         вый список аргументов. Аргумент argv[n+1] может быть  NULL-указа-
         телем для определения конца списка аргументов.
               Файлы,  открытые при вызове spawn, остаются открытыми в но-
         вом процессе. В вызовах execl, execlp, execv, execvp,  child-про-
         цесс наследует окружение parent-процесса. Вызовы execle, execlpe,
         execve,  execvpe  позволяют  пользователю  изменять окружение для
         child-процесса, передавая список установленного  окружения  через
         аргумент envp.
               Аргумент envp является массивом символьных указателей, каж-
         дый  элемент  которого  (исключая последний элемент) указывает на
         строку, заканчивающуюся нулем и определяющую  переменную  окруже-
         ния. Обычно эта строка имеет форму:
               NAME = value,
               где NAME - имя переменной окружения, value - значение стро-
         ки, в которой устанавливается эта переменная. (Заметим, что value
         не заключается в кавычки "..."). Последним элементом массива envp
         должен быть NULL.
               Child-процесс наследует установленное окружение parent-про-
         цесса, когда envp является NULL.
         

      
               Возвращаемое значение.
            
               Возвращаемое   значение   является   статусом   выхода   из
         child-процесса. Статус выхода равен 0, если процесс нормально за-
         вершен. Статус выхода устанавливается в ненулевое значение,  если
         child-процесс особым образом вызывает процедуру exit вместе с не-
         нулевым  аргументом.  Если статус не установлен, то положительный
         статус выхода указывает на непредвиденный выход из программы пос-
         редством abort или прерывания.
               Возвращаемое  значение   -1   свидетельствует   об   ошибке
         (child-процесс  не  стартовал), и errno устанавливается в одно из
         следующих значений:
         
         ЗНАЧЕНИЕ                         ЕГО СМЫСЛ
                           
         E2BIG                Список аргументов  превышает  128  байт
                              или    простраство,    требуемое    для
                              информации окружения,  превышает 32К.
                           
         EINVAL               Аргумент modeflag неверный.
                           
         ENOENT               Файл или path-имя не найдено.
                           
         ENOEXEC              Определенный файл не является выполимым
                              или имеет неверный формат.
                           
         ENOMEN               Достаточная  память  не  доступна   для
                              выполнения child-процесса.
            
               Замечание! Вызовы spawn не сохраняют  режим  преобразования
         для открытых файлов. Если child-процесс использует файлы, унасле-
         дованные  от parent-процесса, тогда процедура setmode применяется
         для установки требуемого режима преобразования для этих файлов.
               В child-процессе, созданном вызовами процедур  spawn,  сиг-
         нальные  установки не сохраняются. В child-процессе они переуста-
         навливаются по умолчанию.
            
               Cм. также abort, execl,  execle,  execlp,  execlpe,  execv,
         execve, execvp, execvpe, exit, _exit, onexit, system.
      
               Пример.
            
               #include <stdio.h>
               #include <process.h>
            
               extern char **environ;
            
               char *args[4];
               int result;
            
               args[0]="child";
               args[1]="one";
               args[2]="two";
         
               args[3]=NULL;
               .
               .
               .
               /*  все  следующие  операторы  позволяют порождать процесс,
         названный "child.exe", и передавать ему три аргумента. Первые три
         аргумента приостанавливают parent-процесс, а последние три - свя-
         зывают parent-процесс с child */.
            
               result=spawnl(P_WAIT,"child.exe","child","one","two",
                   NULL);
               result=spawnle(P_WAIT,"child.exe","child","one",
                   "two", NULL, environ);
               result=spawnlp(P_WAIT, "child.exe","child","one",
                   "two", NULL);
               result=spawnv(P_OVERLAY, "child.exe", args);
               result=spawnve(P_OVERLAY, "child.exe", args, environ);
               result=spawnvp(P_OVERLAY, "child.exe", args);
      
            

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог