http://qs321.pair.com?node_id=11117929


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.