[Gambas-user] Monitoring a process... Need help

M0E Lnx m0e.lnx at ...626...
Mon Feb 4 16:15:09 CET 2008


I'm trying to write a function to execute several shell commands in a
given order. For instance, extract a compressed tarball, and then cd
to it's extracted dir, and do "ls -al"

Basically, what I want to do is execute several shell commands.
I want to use One process for all shell commands instead of using one
process for each command.
I want to use one timer to monitor this one process... and as soon as
it reports a Process.Stopped event, do some error checking, and if
passed, execute the second command using the same Process variable i
defined.

The module file looks like this

MdlShell
Public hShellProc as Process
Public iMdlStep as integer
PUBLIC FUNCTION Extract(sPath as string, iFuncStep)

DIM ShellLine as string

' The following commands will be triggered from a timer event in another form

SELECT CASE iFuncStep
CASE 0 ' First step
ShellLine = "cd /tmp && tar xf " & sPath & " || echo \'ERROR\'"

CASE 1 ' Second step
shellLine = "cd /tmp && ls -a || echo \'ERROR\'"

' And the list would continue here

END SELECT

hShellProc = shell ShellLine for read ' execute the selected command
iMdlStep = iFunctStep ' Make the last step available publically

On a separate form, I have a timer setup.
On this timer setup... on it's timer event I have this

TmShellMon_timer()


If MdlShell.hShellProc.State = Process.Stopped then
Me.TmShellMon.Enabled = false
' Do some error checking here
if instr(sBuffer, "ERROR") > 0 then
STOP EVENT
Else

' If no error is found then execute this
SELECT CASE MdlShell.iMdlStep

CASE 0 ' First step has ran... trigger next
MdlShell.Extract(sPath, 1)
CASE 1 ' Trigger 3rd step
MdlShell.Extract(sPath, 2)
' And so on....
END SELECT
END IF
END IF

The problem With this is... for some reason it's not monitoring the
process right... It's triggering a lot of the lines in the wrong
sequence...

Can anyone think of a way to fix this or a better way to do this?
Please help




More information about the User mailing list