Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re^3: Second background process is pausing the gui

by sundialsvc4 (Abbot)
on Jun 11, 2020 at 03:00 UTC ( #11117929=note: print w/replies, xml ) Need Help??


in reply to Re^2: Second background process is pausing the gui
in thread Second background process is pausing the gui

Having been named, I can't resist stepping in to say that AP is absolutely right – even though it wasn't me. If you open the result of a console command, that command will execute until it finishes, and the calling process will be entirely blocked until it finishes. Domain-specific shell commands such as sleep will not change this. Perl of course does provide ample support for multithreading and child processes, but this isn't how to do it ... as everyone around here other than perhaps yet the OP very well knows.

So ... might anyone please explain to the OP how (s)he can achieve this objective, within the TK context? I can't authoritatively speak to that, but someone else promptly should.

  • Comment on Re^3: Second background process is pausing the gui

Replies are listed 'Best First'.
Re^4: Second background process is pausing the gui
by Ohad (Novice) on Jun 11, 2020 at 06:16 UTC

    Thanks for the replies, the open is working properly on the background. I'm able to keep working while the $cmd is running.

    The $reg_out is output to a text gadget. If you think the open cmd is the issue, how should I fix it? I want to run a CMD on the background, grep the output to be paste on a text gadget on the main process gui

    This is the code of the fileevent, I'm closing the descriptor once the program is done

    sub fill_text_widget { my $block = shift; my $numb = shift; my $widget = $Reg_r{$block}{$numb}{'Txt'}; my $out_rep = $Reg_r{$block}{$numb}{'OutP'}; if (eof($out_rep)) { $widget->fileevent($out_rep,"readable", undef); close $Reg_r{$block}{$numb}{'OutP'}; print "Got EOF\n" if ($DBG); $Reg_r{$block}{$numb}{'IsRun'} =0; &AddReRun($block, $numb); return; } $_ = <$out_rep>; $widget->insert('end', $_); $widget->yview('end'); }

      and what's AddReRun()?

      If you produce a minimal script to reproduce your problem without all the complexities of your current script (see Short, Self-Contained, Correct Example) AND indicating which variables are global (actually avoiding any will be easier), someone may be able to help you more than my general advice. As it is, I will not write a Tk script from scratch just to be able to help you - others may.

      bw, bliako

Re^4: Second background process is pausing the gui
by Anonymous Monk on Jun 11, 2020 at 16:28 UTC
    I can't authoritatively speak to that

    History shows that you can never speak authoritatively to anything. Your "contribution" is never helpful, and is frequently harmful (in that it can lead unsuspecting newbies down the wrong path). It would be best for everyone if you'd just... stop. Please.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://11117929]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (5)
As of 2020-09-19 03:46 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    If at first I don’t succeed, I …










    Results (114 votes). Check out past polls.

    Notices?