Таблица 9



Таблица 9

P_WAITвыполнение родительской программы задерживается до завершения дочерней программы.
P_NOWAITродительская программа продолжает выполнение сразу после запуска дочерней. Этот параметр имеет смысл только для операционных систем OS/2, UNIX, в которых поддерживается мультизадачность.
P_OVERLAYзагружает программу как оверлей и передает ей управление. Этот режим соответствует функции exec в том смысле, что родительская программа не получит управления после завершения дочерней.

В качестве примера использования функций запуска программы рассмотрим возможное решение проблемы создания HELP-системы для прикладной программы.

С помощью текстового редактора можно создать справочную базу данных в формате утилиты Microsoft HELPMAKE, затем, запуская в нужный момент диалоговую утилиту работы с базой данных Microsoft Quick Help QH.EXE, можно получить нужную справку.

Утилита QH использует базы данных, описанные в переменной среды HELPFILES. Мы будем использовать либо родительскую среду, где находится значение переменной HELPFILES по умолчанию, либо указывать новое значение для этой переменной.

Приведенная ниже программа используется для получения справки о функции стандартной библиотеки printf, поиск производится в HELP-базе QuickC: #include <stdio.h> #include <conio.h> #include <process.h> main() { int r; // Получаем справку о функции printf, // справочная база данных расположена // в каталоге d:\qc2\bin r = help("HELPFILES=d:\\qc2\\bin;","printf"); if( r == -1 ) printf( "Невозможно запустить процесс" ); else printf( "\nПроцесс завершен" ); exit(r); } /** *.Name help * *.Title Получить справку по заданному контексту * *.Descr Функция получает в качестве параметров * переменную среды, указывающую на путь * к справочной базе данных и указатель * на строку контекста для поиска в базе. * Затем запускается как дочерний процесс * утилита Microsoft Quick Help QH.EXE, для * которой формируются среда и параметры. * *.Params int help(char *help_file, char *help_topic); * * help_file - переменная среды, указывающая * на путь к справочной базе * * help_topic - контекст для поиска в базе * * *.Return 0 при успешном запуске процесса * -1 не удалось запустить процесс **/ int help(char *help_file, char *help_topic) { char *env[] = { "", NULL }; // Среда, которую // получит QH при запуске if(*help_file != 0) { env[0] = help_file; // Формируем среду для QH // Запускаем утилиту return(spawnlpe(P_WAIT,"QH","QH", "-u",help_topic,NULL,env)); } else { // Если переменная среды не задана, // используем родительскую среду return(spawnlp(P_WAIT,"QH","QH", "-u",help_topic,NULL)); } }

Подробная информация об использовании утилит HELPMAKE и QH приводится в документации на Microsoft C 6.0.



- Начало - - Назад - - Вперед -