EXEC Command [ WAIT ] [ FOR
( READ | WRITE | READ WRITE
) [ AS Variable ]
Выполняет команду. Внутренний объект Process создается для
обслуживания команды.
Команда должна быть задана, как массив строк, содержащий хотя бы
один элемент. Первый элемент этого массива - имя команды, а другие - не
обязательные параметры.
- Если задано WAIT , тогда интерпретатор ждет
завершения команды. Иначе команда выполняется в фоновом режиме.
- Если задано FOR , тогда входы-выходы команды
перенаправляются так, чтобы ваша программа перехватывала их:
- Если задано WRITE , вы можете отправлять
данные на стандартный ввод команды, используя объект Process с общими
инструкциями вывода: PRINT, WRITE, ... Заметьте, что вам нужна ссылка на
объект Process для этого.
- Если задано READ , тогда события будут
генерироваться каждый раз, когда команда отправляет данные в свои
стандартные потоки вывода: событие Read
возбуждается, когда данные отправляются в стандартный поток вывода, а
событие Error возникает, когда данные отправляются в стандартный поток
вывода ошибок. Используйте объект process с общими инструкциями ввода
для чтения стандартного вывода процесса: INPUT,
READ или LINE INPUT.
И, наконец, вы можете получить ссылку на внутренний объект Process в
переменной Variable , задавая ключевое слово AS
.
Пример
' Get the content of a directory
EXEC [ "ls", "-la" ] WAIT
' Same thing, but in background
DIM Content AS String
EXEC [ "ls", "-la" ] FOR READ
...
PUBLIC SUB Process_Read()
DIM sLine AS String
LINE INPUT #LAST, sLine
Content = Content & sLine
PRINT sLine
END
' If your command expects some arguments in quotes, EXEC can handle that automatically:
' for example perl -e 'print while <>;' becomes
EXEC [ "perl", "-e", "print while <>;" ] FOR READ WRITE
См. также
END, QUIT, STOP
Предыдущее: Events declaration
Следующее: Exist