Para lanzar un proceso disponemos de los siguientes comandos:
exec
Ejecuta un proceso
Si se utiliza WAIT entonces se espera a que el proceso termine para continuar con la ejecución. Si no se pone el proceso es ejecutado en segundo plano. En cualquier caso devuelve el objeto proceso correspondiente.
Si se añade este operador el proceso se redirigen las entradas/salidas del proceso mediante un flujo que nosotros administramos mediante print o write para enviar entrada al proceso. Para leer la salida del proceso se ejecuta el evento READ del flujo
Hay dos sinónimos de READ y WRITE llamados INPUT y OUTPUT que no son exactamente sinónimos pues cuando se usan el proceso cree estar siendo ejecutado en una terminal.
No se como ni de que manera pero se que también hay una palabra clave TO que sirve para asignar la salida del proceso a una variable.
shell
Funciona exactamente igual salvo que el proceso se ejecuta en la shell del sistema. No podemos cambiar la shell, se usa la shell por defecto.
El objeto Process
Tiene las siguiente propiedades
handle ---> el pid del proceso
state ---> puede valer running, stopped o crashed
Tiene los siguientes métodos
kill --> destruye el objeto
wait ---> Igual que la claúsula wait de exec o shell. Si se pone el proceso se ejecuta en primer plano y la aplicación espera a que termine. Si no se pone el proceso se ejecuta en segundo plano.
Tiene los siguientes eventos
read ---> se ejecuta cuando el proceso genera datos por la salida estandar (o la que hubiera sido redireccionada con for)
kill ---> se ejecuta cuando el objeto se destruye
Hasta donde yo veo gambas solo puede administrar los procesos que él mismo ha creado. Sería muy de agradecer alguna aportación que modificara esto aunque no veo como.