Ciao, dovrei replicare il seguente comando:
SHELL "lp5250d outputcommand='scs2ps | lpr -o media=A4' env.DEVNAME='PROVA' MYHOST"
con il comando EXEC. Ho provato alcune varianti ma senza ottenere nulla.
Ciao e grazie anticipatamente.
Con EXEC viene creato un processo interno .
Per esempio :
EXEC ["comando", "comando"] .....
Al posto dei puntini devi inserire la parte utile a te con i seguenti comandi :
WAIT
FOR se è specificato, allora l'input-output del comando viene rediretto cosicché il tuo programma possa intercettare :
WRITE se è specificato, puoi mandare dati allo standard input del comando usando l'oggetto process con istruzioni d'output comuni:
print, write ...
READ devi usare l'oggetto process con funzioni di stream e input/output per leggere lo standard output del processo .
INPUT
OUTPUT
AS per ricadere sull'evento NOME usato dall'oggetto process .
Quindi il codice , dovrebbe venire così :
EXEC [ "comando", "comando" ] WAIT/FOR/TO WRITE/READ/INPUT/OUTPUT AS "NOME"
Se devi usare WAIT non devi scrivere nient'altro !!
Spero di esser stato chiaro , Ciao :D
Il comando, come l'ho scritto io, lanciato da gambas con il comando shell funziona.
Purtroppo il comando shell non va bene perchè dopo aver lanciato il programma, debbo anche gestire il processo che ne deriva.
Fra le cose che voglio fare con il processo, voglio poterlo chiudere a mio piacimento. Con il comando shell ho verificato che non si riesce a chiudere il processo avviato, mentre se lanciato da exec si.
Secondo me, la parte più rognosa è questa:
outputcommand='scs2ps | lpr -o media=A4'
Dato che è un parametro/opzione che ne contiene altre a sua volta.
Secondo me il comando andrebbe scritto così:
EXEC ["lp5250d", "outputcommand='scs2ps | lpr -o media=A4'", "env.DEVNAME='PROVA'", "MYHOST"]
Ma purtroppo non và.
Ho trovato l'inghippo. Per far funzionare il tutto, ho dovuto eliminare gli apici nella stringa del comando.
La sintassi corretta è quindi:
EXEC ["lp5250d", "outputcommand=scs2ps | lpr -o media=A4", "env.DEVNAME=PROVA", "MYHOST"]
Saluti a tutti.