On 3/8/07, Joel Guillod <[EMAIL PROTECTED]> wrote:
How can I implement the following features:
- invoque a shell command in a separate thread, i.e. a non blocking
shell during execution of the command;
- receive a callback message with the output and the error result
when the thread exits?
This would be some function similar to the load command, i.e.:
shellExecute commandLine [with message callbackMessage]
where
The commandLine is a string or an expression that evaluates to a
string.
The callbackMessage is the name of a message to send after the
shell exited.
The callbackMessage signature would be:
on <callbackMessage> pCmdOutput,pCmdError,pShellError
where
- pCmdOutput is the value returned by the shell function, i.e. the
result of the sdtout commandLine, including any error messages the
commandLine generates.
- pCmdError is the error the command generate (sdterr under unix).
- pShellError is the shell command's exit code.
Hi Joel,
This isn't exactly what you described, but here is how I do it. Start
the shell command running in the background but directing it's output
to a text file. Then have a loop to check for this text file until it
appears or until a time out period has elapsed.
Here is an example script that does a ping. The handler includes the
post-processing of the result, but you can just ignore that.
function checkPing pIP
put specialFolderPath("Desktop") & "/ping.txt" into tFileName
if there is a file tFileName then delete file tFileName
put "ping -c1 -n " & pIP into tShellCmd
put " > " & tFileName & " 2>&1 &" after tShellCmd
get shell(tShellCmd)
put 0 into timeCheck
repeat 50 times
wait 1 tick with messages
if there is a file tFileName then
put URL ("file:" & tFileName) into tRes
if tRes is empty then next repeat -- file created but no result yet
put wordOffset("loss", tRes) into tWord
if tWord = 0 then next repeat -- file created but result
not complete
put word tWord-2 of tRes into tPercent
if tPercent = "0%" then return true
else return false
end if
end repeat
if there is a file tFileName then delete file tFileName
return false
end checkPing
Cheers,
Sarah
_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution