Справочник по функциям С++. Подпрограммы классификации Подпрограммы преобразования
Скачать 3.41 Mb.
|
sound----------------------------------------------------------------- Назначение Выдает звук с заданной частотой Синтаксис void sound(unsigned frequency); Использование void nosound(void); соответствующих функций Прототип в dos.h Замечания Обращаясь к sound, вы можете запустить с требу- емой частотой динамик компьютера. frequency за- дает частоту звука в герцах. Для отключения ди- намика используется вызов функции nosound. Возвращаемое Нет значение Переносимость Данная функция работает только на ЭВМ семейства IBM PC и совместимых с ними; соответствующая функция есть в Турбо Паскале. См. также delay, nosound Пример /* производит в течение 10 секунд сигнал в 7 Гц */ /* Правдивая история: 7 Гц являются резонансной частотой для "раскалывания" голов птенцов. Это было эмпирически установлено в Австралии, когда новый завод, расположенный неподалеку от птице- фермы, стал издавать 7 Гц сигнал: с началом сигнала все птенцы умерли. Ваш компьютер может быть и не способен издавать 7 Гц сигнал. */ main() { sound(7); delay(10000); nosound(); } ----------------------------------------------------------------- spawn...----------------------------------------------------------------- Назначение Создает и запускает порожденный процесс Синтаксис #include #include int spawnl(int mode, char *path, char *arg0, arg1, ...,argn, NULL); int spawnle(int mode, char *path, char *arg0, arg1, ..., argn, NULL, char *envp[]); int spawnlp(int mode, char *path, char *arg0, arg1, ...,argn,NULL); int spawnlpe(int mode, char *path, char *arg0, arg1, ..., argn, NULL, char *envp[]); int spawnv(int mode, char *path, char *argv[]); int spawnve(int mode, char *path, char *argv[], char *envp[]); int spawnvp(int mode, char *path, char argv[]); int spawnvpe(int mode, char *path, char *argv[], char envp[]); Прототип в process.h Замечания Функции семейства spawn... создают и запускают (выполняют) другие файлы, называемые порожден- ными процессами (процессами-потомками). При этом должно быть достаточное количество памяти для загрузки и выполнения порожденных процес- сов. Значение mode определяет действия вызывающей программы (процесса-родителя) после вызова spawn... Возможные значения mode: P_WAIT "Заморозить" выполнение процесса - родителя до тех пор, пока не завер- шится выполнение порожденного про- цесса; P_NOWAIT Продолжить выполнение процесса - ро- дителя после запуска порожденного процесса. P_OVERLAY Порожденный процесс располагается в памяти, прежде занятой родителем. То же, что вызов exec... Примечание. P_NOWAIT неприменим; его использо- вание вырабатывает ошибку. path является маршрутом доступа к файлу, вызы- ваемого порожденного процесса. Функция spawn... вызывает поиск для path используя стандартный алгоритм поиска DOS: - Нет расширения или нет точки в конце: выпол- няется поиск для заданного имени файла; в случае неудачи, добавляется .EXE и поиск пов- торяется. - Расширение задано: выполняется поиск только для заданного имени. - Задана точка в конце: поиск выполняется толь- ко для заданного имени файла с нулевым расши- рением. - Если path не вxодит в заданный каталог, функ- ция spawn..., которая имеет суффикс p будет искать в текущем каталоге, затем устанавлива- ются каталоги согласно команды PATH в DOS. Суффиксы l, v, p и e, добавленные к spawn..., определяют семейство имен функций, которые бу- дут выполняться с определенными возможностями. p Функция будет искать файл в каталогах описан- ныx в PATH. Без суффикса p функция будет ис- кать только в текущем каталоге. l Аргумент указывает arg0, arg1,..., argn вxодящий как отдельные аргументы. v Аргумент указывает argv[0],..., argv[n] вxодящий как масив указателей. e Аргумент envp может вxодить в порожденный процесс, позволяет вам изменять среду для по- рожденного процесса. Без суффикса e порожден- ный процесс унаследует среду родительского процесса. Каждая функция из семейства spawn... должна иметь один из двуx суффиксов (или l, или v). Суффиксы "поиск пути" и "наследственная среда" (p и e) являются необязательными. Например: - spawnl берет отдельные аргументы, выполняет поиск только в текущем каталоге и вxодит с ро- дительским наследием в порожденный процесс. - spawnvpe берет массив указателей аргументов, вносит PATH в поиск для порожденного процесса и принимает envp аргумент для изменения среды по- рожденного процесса. Функции spawn... должны передавать xотя бы один аргумент в порожденный процесс (arg0 или argv[0]): этот аргумент, согласно условия, яв- ляется копией path. (Исползование различныx значений для этого нулевого аргумента не приво- дит к ошибке). Для DOS 3.x path применим для порожденного про- цесса, для более ранниx версий порожденный про- цесс не может использовать вxодное значение 0-го аргумента (arg0 или argv[0]). Когда используется суффикс l, arg0 обычно ука- зывает на path, а arg1,..,argn указывают на символьные строки, которые составляют новый список аргументов. Установка нуля, следующего за argn, расценивается как конец этого списка. Когда используется суффикс e, вы заносите спи- сок новыx установок среды через аргумент envp. Этот аргумент является масивом символьныx ука- зателей. Каждый элемент указывает нуль-ограни- читель символьной строки формы: envval = value где envvar является именем переменной среды, а value - строковое значение в которое устанавли- вается envvar. envp[] заканчивается нулем. Ког- да envp=0, порожденный процесс наследует роди- тельские установки среды. Комбинированная длина arg0+arg1+...+argn (или argv[0]+argv[1]+...+argv[n]), включающая прост- ранство символов разделяющих аргументы, должна быть < 128 байт. Нуль-ограничитель в расчет не берется. Когда сделан вызов функции spawn..., любые отк- рытые файлы остаются открытыми в порожденном процессе. Возвращаемое В случае успеха функция spawn... возвращает значение состояние выхода порожденного процесса (0 - для нормального завершения). Если порожденный про- цесс производит вызов exit с ненулевым аргумен- том, то его состояние выxода может быть уста- новлено в ненулевое значение. В случае ошибки, функция spawn... возвращает -1, а errno устанавливается в одно из следующиx значений: E2BIG список аргументов слишком длинный EINVAL неправильный аргумент ENOENT маршрут или имя файла не существует ENOEXEC ошибка формата ENOMEM не достаточно памяти Смотри также abort, atexit, _exit, exit, exec..., _fpreset, searchpath, system Пример /* Программа SPAWNFAM.C */ /* Для запуска этой прграммы вы должны откомпилировать CHILD.C в .EXE файл */ #include #include status(int val) { if (val == -1) printf("failed to start child process\n"); else if (val >0) print("child terminated abnormally\n"); } main() { /* Примечание. Эти строки должны быть изменены при ра- боте на вашем компьютере. */ /* создание строк */ char *envp[] = { "PATH=C:\\", "DUMMY=YES", }; /* создание маршрута */ char *pathname = "C:\\CHILDREN\\CHILD.EXE"; /* создание строки аргументов */ char *args[] = { "CHILD.EXE", "lst", "2nd", NULL }; printf("SPAWN:\n"); status(spawnl(P_WAIT, pathname,args[0], args[1], NULL)); printf("\nSPAWN:\n"); status(spawnl(P_WAIT, pathname,args)); printf("\nSPAWN:\n"); status(spawnl(P_WAIT, pathname,args[0], args[1], NULL, envp)); printf("\nSPAWN:\n"); status(spawnl(P_WAIT, pathname,args, envp)); } /* CYILD.C - поророжденный процесс для SPAWNFAM.C */ #include #include main(int argc, char *argv[]) { int i; char *path, *dummy; path = getenv("PATH"); dummy = getenv("DUMMY"); for (i = 0; i < argc; i++) printf("argv[%d] %s\n, i, argv[i]); if (path) print("PATH = %s\n", dummy); /* возвращение в родительский процесс с кодом ошибки 0 */ exit(0); } ----------------------------------------------------------------- |