CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник по библиотечным функциям языка Си
spawn - создать процесс
Описание
Системный вызов spawn создает и исполняет новый про- цесс - потомок. Более просто - запускается новая прог- рамма и затем старая программа продолжается. Системный вызов работает подобно вызову подпрограммы. Создание нового подпроцесса требует наличия свободной памяти, доступной для исполнения порожденного процесса, наряду с той, что занята текущей программой. Смотрите введение в этот раздел руководства, где описана работа с памятью при вызове spawn. Флаг mode игнорируется. Он, возможно, будет использоваться в последующих версиях. Для mode используйте значение 0. Аргумент filename определяет запускаемую программу. Только для spawnlp и spawnvp: если filename не содер- жит маршрута и не находится в текущем каталоге, то для поиска файла используется переменная окружения PATH. Argv[0] не передается подпроцессу и используется лишь для совместимости, но в целях переносимости должен быть всегда включен. Этот параметр должен быть именем запускаемой программы. Командная строка, передаваемая порождаемой программе, составляется из символьных строк в spawn вызове, пер- вая строка - это arg1 и т.д. Общая длина этих строк не должна превышать 128 символов. Аргумент argv, используемый в вызовах spawnv и spawnp, является массивом указателей на char. Последний указа- тель в argv должен быть NULL для индикации конца спис- ка.
Использование
#include <process.h> int spawnl(int mode, char *pathname, char *arg0, *arg1, ... , *argn, NULL); int spawnlp(int mode, char *filename, char *arg0, *arg1, ... , *argn, NULL); int spawnv(int mode, char *pathname, char *argv[]); int spawnvp(int mode, char *filename, char *argv[]);
Возвращаемое значение
Возвращаемое значение дает статус завершения порожден- ной программы. Значение 0 говорит о том, что порожден- ная программа выполнилась успешно. Положительное зна- чение говорит о том, что порожденная программа испол- нилась, но была сброшена или завершилась из-за ошибки исполнения; возвращаемое значение является статусом завершения порожденного процесса. Отрицательное значе- ние говорит о том, что порожденный процесс не был исполнен, и устанавливается errno.
Пример
#include <stdio.h> main() { char *args[4]; args[0] = "ztc1.exe"; args[1] = "stuff"; args[2] = "morestuff"; args[3] = NULL; if (spawnv(0, "C:ZTC1.EXE", args) == -1) fprintf(stderr, "exec failed!\n"); }
Рекомендация
Смотрите также abort, exit, exec, system.
Оставить комментарий
Комментарии
1.
+1 / -0
28 марта 2005, 14:21:54
Можно ли вызвать с помощью spawnlp с параметрами P_WAIT процесс так, чтобы DOS'овское окно не было видно или оно открывалось на заднем плане?