EXEC
[ Proces = ] EXEC Komanda [ WAIT ] [ FOR { { READ | INPUT } | { WRITE | OUTPUT } } ] [ AS Ime ]
EXEC Komanda TO Promenliva
Извршува команда. Се создава интерен
процесен објект.
Командата мора да се специфицира како низа од стрингови што содржат најмалку еден елемент. Првиот елемент на оваа низа е името на командата, а останатите се опционите параметри.
- Ако е наведено WAIT , интерпретерот ќе чека до завршувањето на командата. Инаку, командата се извршува во заднина.
- Ако е наведено FOR, влезовите и излезите на компандата се пренасочуваат така што програмата ги пресретнува:
- Ако е наведено WRITE, можете да испратите податоци на стандардниот излез на командата со помош на процесен објект со вообичаените инструкции за излез: PRINT, WRITE...
Забележете дека за ова не ви треба референца до
процесниот објект.
- Ако е наведено READ, тогаш ќе се генерираат настани секогаш кога командата ќе испрати податоци на стандардниот поток за излез: настанот Read се објавува кога податоците ќе се испратат на стандардниот излезен поток, а настанот Error се објавува кога се испраќаат податоци на стандардниот поток за грешка. Употребете објект за процес со поток за да го прочитате стандардниот излез.
Ако ги употребите клучните зборови
INPUT и
OUTPUT наместо
READ и
WRITE, тогаш процесот се извршува во виртуелен терминал. Тоа значи дека процесот не работи во вистински терминал.
Name е името на настанот што го користи
процесниот објект. Стандардно, тоа е
"Process".
Референца до создадениот
процесен објект можете да добиете со обично доделување.
Ако ја користите втората синтакса, програмата се извршува, интерпретерот чека да заврши и целосниот излез на командата се става во наведениот стринг.
Example
' Najdi ja sodrzinata na direktoriumot
EXEC [ "ls", "-la", "/tmp" ] WAIT
' Ja prefrluva sodzinata na direktoriumot vo string
DIM sOutput AS String
EXEC [ "ls", "-la", "/tmp" ] TO sOutput
' Ja prefrluva sodzinata na direktoriumot vo string, no vo zadnina
DIM sOutput AS String
' Se koristi specificno ime na nastan
EXEC [ "ls", "-la", "/tmp" ] FOR READ AS "Sodrzina"
...
PUBLIC SUB Contents_Read()
DIM sLine AS String
READ #LAST, sLine, -256
sOutput &= sLine
END
PUBLIC SUB Contents_Kill()
PRINT sOutput
END
 |
Со помош на функцијата Lof можете да дознаете колку бајти можете да прочитате во ракувачот со настан Process_Read.
|
 |
Бидејќи аргументите се испраќаат директно на процесот, не морате да ги ставате под наводници, за разлика од работата во командната лушпа.
' perl -e 'print while <>;' stanuva
EXEC [ "perl", "-e", "print while <>;" ] FOR READ WRITE
|