Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вариант_№21.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
323.58 Кб
Скачать

Int main(void)

{

int handle;

int status;

handle = sopen("c:\\autoexec.bat",O_RDONLY,SH_DENYNO,S_IREAD);

if(!handle)

{

printf("Ошибка sopen\n");

exit(1);

}

status = access("c:\\autoexec.bat",6);

if(status == 0)

printf("Разрешены чтение/запись\n");

else

printf("Чтение/запись запрещены\n");

close(handle);

return 0;

}

sound

Функция Запускает встроенный динамик PC на генерацию зву-

ка указанной частоты.

Синтаксис #include<dos.h>

void sound(unsigned frequency);

Файл, содержащий dos.h

прототип

Описание sound запускает встроенный динамик на генерацию

= 202 =

звука указанной частоты. Частота определяется па-

раметром frequency (в Герцах, т.е. циклах в се-

кунду). Для выключения динамика, включенного фун-

кцией sound, воспользуйтесь функцией nosound.

Переносимость sound работает только на компьютерах, совместимых

с IBM PC. Соответствующая функция есть в Turbo

Pascal.

Смотрите также delay, nosound.

Пример:

/* Звук частотой 7 Гц в течении 10 секунд

Возможно ваш РС не способен генерировать такой звук */

Int main(void)

{

sound(7);

delay(10000);

nosound();

}

spawn...

Функция Создает и запускает дочерний процесс.

Синтаксис #include <process.h>

#include <stdio.h>

int spawnl(int mode, char *pathname, char *arg0,

arg1,...,argn, NULL);

int spawnle(int mode, char *pathname, char *arg0,

arg1,...,argn, NULL);

int spawnlp(int mode, char *pathname, char *arg0,

arg1,...,argn, NULL);

int spawnlpe(int mode, char *pathname, char *arg0,

arg1,...,NULL, char *envp[]);

int spawnv(int mode, char *pathname, char*argv[]);

int spawnve(int mode, char *pathname,

char *argv[], char *envp[]);

int spawnvp(int mode, char *pathname,

char *argv[]);

int spawnvpe(int mode, char *pathname,

char *argv[], char * envp[]);

Файл, содержащий process.h

прототип

= 203 =

Описание Функции семейства spawn... создают и запускают

другие программные файлы, известные под названием

"дочерний процесс". Для загрузки и выполнения до-

чернего процесса должно быть достаточно памяти.

Значение параметра mode влияет на то, каким обра-

зом материнский процесс продолжит свои действия

после вызова функции spawn... . Далее перечислены

возможные значения аргумента mode:

P_WAIT Ставит родительский процесс в состояние

ожидания до тех пор, пока дочерний процесс

не завершится.

P_NOWAIT Продолжает работу родительского процесса

одновременно с работой дочернего процес-

са.

P_OVERLAY Перекрывает дочерним процессом область

памяти первоначально занятую родитель-

ким процессом. Работает аналогично вы-

зову функции exec... .

Примечание. Значение P_NOWAIT в данной версии не

поддерживается; использование его приведет к

ошибке.

Аргумент pathname представляет собой имя файла

дочернего процесса. Функции семейства spawn...

осуществляют поиск файла с данным именем, пользу-

ясь следующим стандартным алгоритмом DOS:

- Нет расширения или нет точки; осуществляется

поиск по точному имени файла, если по такому

имени файл не найден, добавляется .COM, и поиск

производится снова, если опять не найден, то

добавляет .EXE и поиск повторяется;

- Расширение имени присутствует; поиск произво-

дится только по точному имени файла;

- Точка присутствует; поиск производится только

по имени файла - без расширения.

- Если path не содержит имени директории, то фун-

кции spawn... с суффиксом p производят поиск в

текущей директории, а затем в директориях, ука-

занных в переменной окружения PATH.

Суффиксы, добавляемые к имени функции spawn...

(l, v, p, e) отражают некоторые особенности рабо-

= 204 =

ты функций:

p - означает, что функция будет искать дочерний

процесс в директориях, определяемых перемен-

ной операционной среды системы DOS-PATH. Без

задания суффикса p функция будет искать файл

только в текущей рабочей директории.

l - означает, что аргументы-указатели arg0, arg1,

... argn передаются, как отдельные аргументы.

Обычно, суффикс l применяется, когда количес-

тво передаваемых аргументов известно заранее.

v - означает, что аргументы-указатели передаются

в виде массива указателей: argv[0],

...argv[n]. Обычно суффикс v употребляется

при переменном числе аргументов.

e - обозначает, что дочернему процессу может быть

передан аргумент envp, что позволяет менять

операционную среду дочернего процесса. Без

суффикса e дочерний процесс наследует опера-

ционную среду родительского процесса.

Каждая функция семейства spawn... должна иметь

один из двух суффиксов l или v. Суффиксы p и e

необязательны.

Например:

- функция с именем spawnl - это функция семейства

spawn..., принимающая отдельные аргументы, осу-

ществляющая поиск файла дочернего процесса в

корневой или рабочей директории и передающей

дочернему процессу операционную среду родитель-

ского процесса.

- Функция spawnvpe - это функция семейства

spawn..., которая принимает массив аргумен-

тов-указателей, применяет параметр среды PATH

для поиска файла дочернего процесса и передает

ему параметр envp, позволяющий ему изменить

свою операционную среду.

Функции семейства spawn... должны передавать до-

чернему процессу по крайней мере один аргумент

(arg0 или argv[0]). По соглашению данным аргумен-

том является копия параметра pathname. (Использо-

вание для данного нулевого аргумента других зна-

чений не вызовет ошибку).

= 205 =

В версиях операционной системы DOS 3.0 и выше

поддерживается аргумент pathname. В более ранних

версиях не может использоваться значение нулевого

аргумента (arg0 или argv[0]).

При использовании суффикса l arg0 обычно адресует

pathname, а остальные аргументы arg1,...,argn яв-

ляется указателями на символьные строки, реально

составляющие список аргументов. Обязательный ад-

ресный нуль NULL завершает список аргументов.

При использовании суффикса e, список новых назна-

чений операционной среды передается посредством

аргумента envp. Данный аргумент представляет со-

бой массив указателей, где каждый элемент указы-

вает на символьную строку с нулевым окончанием в

форме:

envvar = value,

где envvar - это имя переменной операционной сре-

ды, а value - это строковое, значение, присваива-

емое переменной envvar. Последним элементом мас-

сива envp[] является NULL. Когда envp[0] равно

NULL, дочерний процесс наследует назначения среды

родительского процесса.

Общая длина списка arg0+arg1+...+argn (или

argv[0]+argv[1]+...+argv[n]), включая пробелы,

разделяющие аргументы, должна быть <128 байт,

причем нулевые окончания не учитываются.

После вызова функции spawn... любые открытые ра-

нее файлы остаются открытыми в дочернем процессе.

Возвращаемое При успешном завершении возвращается статус выхода

значение из дочернего процесса (0- для нормального выхода).

Если дочерний процесс специально вызывал функцию

exit с ненулевым аргументом, его выходной статус

также получит ненулевое значение.

В случае ошибки функции spawn... возвращают -1, и

переменная errno получает одно из следующих зна-

чений:

E2BIG - Список аргументов слишком длинный;

EINVAL - Неверный аргумент:

ENOENT - Маршрут или имя файла не найдены;

ENOEXEC - Ошибка формата EXEC:

ENOMEM - Не хватает памяти.

= 206 =

Переносимость Функции семейства spawn... уникальны для DOS.

Смотрите также abort, atexit, _exit, exit, exec..., _fpreset,

searchpath, system.

Пример 1:

#include<process.h>

#include<stdio.h>

#include<conio.h>

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]