Таблица 8



Таблица 8

(0) 2seg_env сегментный адрес, по которому загружается программа
(+2) 4reloc фактор перемещения, аналогичен элементу таблицы перемещений в заголовке EXE-файла

Следующая демонстрационная программа загружает программу PARM.COM_как оверлей без передачи ей управления: .MODEL small DOSSEG .STACK 100h .DATA path db "PARM.COM",0 epb dw 0 reloc dd 0 .CODE .STARTUP mov ax,ds mov es,ax mov bx,SEG buff mov epb,bx mov bx,OFFSET epb ; ES:BX указывают на EPB mov dx,OFFSET path ; DS:DX указывают на путь ; загружаемой программы mov ax, 4B03h ; AH = 4Bh ; AL = 0 загрузить оверлей int 21h .EXIT 0 buff: dd 100 dup(?) END

Программа загружается в буфер buff.

Пользователи языка Си имеют в своем распоряжении три возможности запустить программу.

Самый простой способ - использовать функцию system(). Эта функция может выполнить любую команду DOS или любую программу, пакетный файл. Например: system("FORMAT A:");

При использовании этой функции должен быть доступен COMMAND.COM. К сожалению, хотя system и возвращает код завершения, по нему нельзя сделать вывод о том, как была выполнена запускаемая программа. Если в качестве аргумента функции будет передано неправильное имя, на экране появится сообщение: Bad command or file name

Код возврата в этом случае будет 0 - как будто все нормально!

Другие две возможности запустить программу - использовать функции spawn и exec. Функция spawn и ее разновидности запускают программу как дочерний процесс. Функция exec загружает новую программу как оверлей на место старой и передает ей управление без возврата. После завершения дочерней программе управление будет передано COMMAND.COM или программе, которая запустила родительскую программу.

Семейство функций spawn обеспечивает запуск дочерней программы с родительской или со специально сформированной средой. Кроме того, в файле process.h описаны параметры, которые можно передать функции spawn:



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