EXEC
[ Processo = ] EXEC Comando [ WAIT ] [ FOR { { READ | INPUT } |
{ WRITE | OUTPUT } } ] [ AS Nome ]
EXEC Comando TO Variabile
Esegue un comando. Per gestire il comando viene creato un oggetto Process interno. Il comando deve essere specificato come un array di stringhe contenente almeno un elemento. Il primo elemento di questo array è il nome del comando, gli altri sono parametri opzionali.
- Se WAIT è specificato, allora l'interprete attende la fine del comando. Altrimenti, il comando viene eseguito in background.
- Se FOR è specificato, allora l'input-output del comando viene rediretto cosicché il tuo programma possa intercettarli:
- Se WRITE è specificato, puoi mandare dati allo standard input del comando usando l'oggetto Process con istruzioni d'output comuni: PRINT, WRITE, ... . Nota che necessiti di un riferimento all'oggetto Process per questo.
- Se READ è specificato, allora verranno generati eventi ogni volta che il comando manda dati al suo stream standard output: l'evento Read viene sollevato quando vengono mandati dati allo stream standard output, e l'evento Error viene sollevato quando vengono mandati dati allo stream standard error. Usa l'oggetto Process con Funzioni di Stream e Input/Output per leggere lo standard output del processo.
Puoi avere un riferimento all'oggetto Process interno creato usando un assegnamento.
Se usi la seconda forma, il comando viene eseguito, l'interprete attende la sua fine, e l'output completo del comando viene messo nella stringa specificata.
Esempio
' Ottieni il contenuto della directory
EXEC [ "ls", "-la", "/tmp" ] WAIT
EXEC [ "ls", "-la", "/tmp" ] WAIT
' Metti il contenuto della directory nella stringa
DIM sOutput AS String
EXEC [ "ls", "-la", "/tmp" ] TO sOutput
DIM sOutput AS String
EXEC [ "ls", "-la", "/tmp" ] TO sOutput
' Metti il contenuto della directory nella stringa, ma in background
DIM sOutput AS String
' Viene usato un nome di evento specifico
EXEC [ "ls", "-la", "/tmp" ] FOR READ AS "Contenuto"
...
PUBLIC SUB Contenuto_Read()
DIM sLinea AS String
READ #LAST, sLinea, -256
sOutput &= sLinea
END
PUBLIC SUB Contenuto_Kill()
PRINT sOutput
END
DIM sOutput AS String
' Viene usato un nome di evento specifico
EXEC [ "ls", "-la", "/tmp" ] FOR READ AS "Contenuto"
...
PUBLIC SUB Contenuto_Read()
DIM sLinea AS String
READ #LAST, sLinea, -256
sOutput &= sLinea
END
PUBLIC SUB Contenuto_Kill()
PRINT sOutput
END
Dato che gli argomenti vengono mandati direttamente al processo, non hai bisogno di racchiuderli tra virgolette, come dovresti fare in una shell. ' perl -e 'print while <>;' diventa EXEC [ "perl", "-e", "print while <>;" ] FOR READ WRITE |
Nessun commento:
Posta un commento