Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ABORT.docx
Скачиваний:
2
Добавлен:
09.09.2019
Размер:
69.94 Кб
Скачать

Int result;

args[0] = "child";

args[1] = "one";

args[2] = "two";

args[3] = NULL;

/* все следующие операторы позволяют выполнять процесс,

названный "child.exe", и передать ему три аргумента. */

result = execl("child.exe", "child", "one", "two",

NULL);

result = execle("child.exe", "child", "one", "two",

NULL, environ);

result = execlp("child.exe", "child", "one", "two",

NULL);

result = execv("child.exe", args);

result = execve("child.exe", args, environ);

result = execvp("child.exe", args);.

EXIT - _EXIT

#include <process.h> требуется только для объявления

функции

#include <stdlib.h> использует либо <process.h>,

либо <stdlib.h>

void exit(status); завершает процесс после закры-

тия файла

void _exit(status); завершает процесс без обновле-

ния буферов потока

int status; статус выхода

Описание.

Функции exit и _exit завершают вызванный процесс. Перед за-

вершением процесса функция exit обновляет все буферы и закрывает

все открытые файлы. Функция _exit завершает все процессы без об-

новления буферов потока. Значение status обычно устанавливается в

0 для указания нормального выхода и устанавливается в любое дру-

гое значение для определения ошибки. Поскольку вызовы exit и

_exit не возвращают значения, младший байт status является возв-

ратом для ожидающего parent-процесса. Если нет parent-процесса,

то значение status теряется.

Возвращаемое значение.

Возвращаемого значения нет.

См.также abort, execl, execle, execlp, execv, execve,

execvp, onexit, spawnl, spawnle, spawnlp, spawnv, spawnve,

spawnvp, system.

Пример:

#include <process.h>

#include <stdio.h>

FILE *stream;

.

.

.

/* следующие операторы вызывают завершение процесса после

обновления буферов и закрытия открытых файлов */

if((stream=fopen("data","r"))==NULL) {

fprintf(stderr,"couldn't open data file\n");

exit (1);

}

/* следующие операторы вызывают немедленное завершение про-

цесса, если файл не может быть открытым */

if((stream=fopen("data","r"))==NULL)

{

fprintf(stderr,"couldn't open data file\n");

_exit (1);

}

EXP

#include <math.h>

double exp(x);

double x; значение с плавающей точкой

Описание.

Функция exp возвращает экспоненциальную функцию своего ар-

гумента x с плавающей точкой.

Возвращаемое значение.

Функция exp возвращает e в степени x. При переполнении фун-

кция возвращает HUGE и устанавливает errno в ERANGE, при потере

значимости exp возвращает 0, но не устанавливает errno.

См.также log.

Пример:

#include <math.h>

double x,y;

.

.

.

y = exp(x);.

_EXPAND

#include <malloc.h> требуется только для объявления

функции

char *_expand(ptr,size);

char *ptr; указатель на ранее захваченный

блок памяти

unsigned size; новый размер в байтах

Описание.

Функция _expand изменяет размер ранее захваченных блоков

памяти, пытаясь расширить или сузить блок без передвижения его

местоположения в heap.

Аргумент ptr указывает на начало блока. Аргумент size зада-

ет новый размер блока в байтах. Содержимое блоков не изменяется.

Аргумент ptr также указывает на освобождающийся блок до тех

пор, пока не будут внешне вызваны calloc, _expand, halloc, malloc

или realloc, либо пока блок будет свободен.

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

тается свободным и после вызова _expand.

Возвращаемое значение.

Функция _expand возвращает char-указатель на перезахвачен-

ный блок памяти. В отличии от realloc, _expand не может передви-

гать блок и изменять его размеры. Это означает, что аргумент ptr

для _expand является тем же самым, что и возвращаемое значение,

если памяти достаточно, чтобы расширить блок без его передвиже-

ния.

Возвращается значение NULL, если памяти недостаточно для

расширения блока. В этом случае объект, на который указывает ptr,

будет расширен настолько, насколько позволяет его расположение.

В памяти, на которую указывает возвращаемое значение, га-

рантировано выравнивание для хранения любого типа объекта.

Новый размер объекта может быть проверен функцией _msize.

Чтобы получить указатель, тип которого отличен от char, ис-

пользуется преобразователь типа возвращаемого значения.

См.также calloc, free, halloc, malloc, _msize, realloc.

Пример:

#include <stdio.h>

#include <malloc.h>

main()

{

long *oldptr;

unsigned int newsize=64000;

oldptr=(long*)malloc(10000*sizeof(long));

printf("Size of memory block pointed to by

oldptr=%u\n", _msize(oldptr));

if (_expand(oldptr,newsize)!= NULL)

printf("expand was able to increase block

to %u\n", _msize(oldptr));

else

printf("expand was able to increase block to

only %u\n", _msize(oldptr));

}

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