Главная страница
Навигация по странице:

  • Прототип в

  • Возвращаемое

  • Назначение

  • Смотри также

  • Справочник по функциям С++. Подпрограммы классификации Подпрограммы преобразования


    Скачать 3.41 Mb.
    НазваниеПодпрограммы классификации Подпрограммы преобразования
    АнкорСправочник по функциям С++.doc
    Дата07.05.2018
    Размер3.41 Mb.
    Формат файлаdoc
    Имя файлаСправочник по функциям С++.doc
    ТипДокументы
    #18992
    КатегорияИнформатика. Вычислительная техника
    страница104 из 120
    1   ...   100   101   102   103   104   105   106   107   ...   120

    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);

    }

    -----------------------------------------------------------------
    1   ...   100   101   102   103   104   105   106   107   ...   120


    написать администратору сайта