Time-limit shell command (Windows)

Ben Rubinstein benr_mc at cogapp.com
Sun Aug 30 02:59:18 EDT 2026


Martin that's so kind, thank you. I will investigate OpenProcess and see if I 
can make this work.

Ben

On 29/08/2026 12:52, Martin Koob wrote:
> Hi,
> 
> Rather than *shell()* you can use *open process* in LiveCode to have the 
> process run asynchronously, get PIDs to monitor progress and kill processes at 
> a time point.  I had a vague idea of how this worked in theory.  But, instead 
> of relying on my rusty brain I opened my trusty ChatGPT (5.6 sol light) and 
> trying a few different prompts in order to fully understand the process it 
> produced something that I understand and I think should do what you want. Here 
> is a list-server friendly summary I asked ChatGPT to make of a much longer chat.
> 
>     ChatGPT //////./////.//////./////.//////./////.//////./////.//////./////.//////./////.//////./////.//////./////.//////./////.//////./////.//////./////.//////./////.
> 
>     This is possible, but a shell process cannot directly call a LiveCode
>     handler. It must communicate its progress and final result back through
>     something LiveCode can monitor, such as stdout, a status file, or a
>     localhost socket. LiveCode then turns that event into a callback message.
> 
>     The shell() function is synchronous, so calling a long-running command
>     with shell() will block LiveCode. It can still be used briefly to launch a
>     properly detached background process and obtain its PID, provided all of
>     the process’s standard streams are redirected.
> 
>     The open process command is another possibility. Unlike shell(), open
>     process starts a process and returns immediately. It can open the process
>     for reading, writing, both, or neither. LiveCode can also inspect
>     openProcesses and openProcessIDs. However, open process does not provide
>     an automatic completion callback, and support for Unix command-line
>     processes on macOS is limited.
> 
>     A practical cross-platform design would be:
> 
>     LiveCode starts a detached worker and records its PID.
>     The worker writes progress messages to a file or local socket.
>     LiveCode uses “send monitorJob to me in 100 milliseconds” to check
>     progress without blocking the UI.
>     A launcher or watchdog enforces the time limit and terminates the worker
>     if necessary.
>     The worker or launcher writes a final status such as success, error, or
>     timeout, together with the exit code and message.
>     The LiveCode monitor handler dispatches the appropriate success or error
>     callback.
> 
>     For example, the final status might be:
> 
>     success,0,Completed
> 
>     error,17,Could not open input file
> 
>     timeout,124,Process exceeded its time limit
> 
>     The LiveCode monitoring handler would read that status and dispatch
>     something such as jobSucceeded or jobFailed. Therefore, the “callback” is
>     generated by LiveCode after it receives the process result; it is not a
>     direct call from the shell process.
> 
>     For simple and reliable jobs, I would use progress and status files. For
>     frequent or immediate updates, a localhost socket is more event-driven.
>     Reading stdout from an open process can also work, but care is needed
>     because a read can block if no output is available, and the child process
>     may buffer its output.
> 
>     This is similar to the behavior exposed by tsNet, although tsNet
>     implements its asynchronous work and callbacks inside an external library.
> 
>     \\\\\.\\\\\\.\\\\\\\\.\\\\\\.\\\\\.\\\\\\.\\\\\.\\\\\\.\\\\\.\\\\\\.\\\\\.
>     \\\\\\.\\\\\.\\\\\\.\\\\\.\\\\\\.\\\\\.\\\\\\.\\\\\.\\\\\\.\\\\\.\\\\\\.\\
>     \\\.\\\\\\.\\\\\\.ChatGPT
> 
> 
> If you are interested in the full chat which includes code to implement the 
> ideas above using Windows( as Ben asked) and a fuller exposition of the 
> concepts I can upload the full chat where ever you think is best.  (I am 
> pretty sure I can't send it through the use-LiveCode list.)
> 
> WARNING: I have not tested this idea out. ChatGPT is fairly good with LiveCode 
> and pretty solid at creating shell code but it does make syntax errors in 
> LiveCode at times. I have added rules in my ChatGPT memory to catch some 
> common ones I have come across e.g. it makes up weird ways to end up repeat 
> blocks.  Correcting it in the chat never had a lasting effect. For example, It 
> would pick random ways from other programming languages. I had to explicitly 
> ask it to commit the correct LiveCode way to create repeat loops to memory.
> 
> Martin
> 
>> On Aug 27, 2026, at 11:22 AM, Ben Rubinstein via use-livecode <use- 
>> livecode at lists.runrev.com> wrote:
>>
>> Thanks Bob; but I was hoping to do this in LiveCode.
>>
>> e.g. is there a way to invoke a shell command to run asynchronously, 
>> returning the PID to LiveCode so that it can be monitored?
>>
>>
>> On 26/08/2026 16:26, Bob Sneidar via use-livecode wrote:
>>> <https://superuser.com/questions/520527/windows-command-line-time-limit>
>>> superuser.com<https://superuser.com/questions/520527/windows-command-line- 
>>> time-limit>
>>> [X]<https://superuser.com/questions/520527/windows-command-line-time-limit>
>>> I just googled it.
>>> Bob S
>>> On Aug 26, 2026, at 02:07, Ben Rubinstein via use-livecode <use- 
>>> livecode at lists.runrev.com> wrote:
>>> Hello hive mind,
>>> Is there a way from LiveCode to invoke a shell command with a time limit, 
>>> to force it to fail after a certain time? (This is on Windows.)
>>> many thanks,
>>> Ben
>>
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode at lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your subscription 
>> preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
> 



More information about the use-livecode mailing list