Would Mojo::IOLoop->subprocess <https://mojolicious.org/perldoc/Mojolicious/Guides/Cookbook#Subprocesses> work for you? Where the example shows sleep 5, put your system call to gvim? Not sure if that's a good solution if gvim is a long-running process, tho. Also, try it with `perl script daemon` as opposed to using `morbo`, maybe? Or try the systemd setup for hypnotoad <https://mojolicious.org/perldoc/Mojolicious/Guides/Cookbook#Hypnotoad>. Is there any chance that Minion <https://mojolicious.org/perldoc/Minion> can help you here? Minion is designed to handle long-running processes.
On Mon, Mar 9, 2020 at 8:24 PM Mike Lieman <mikelie...@gmail.com> wrote: > I don't think you want to use Daemon::Control. How about a nice, simple > fork()? > > On Mon, Mar 9, 2020 at 8:46 PM Matthew Pressly <matthew.pres...@gmail.com> > wrote: > >> From a mojolicious web app, I need to be able to launch gvim by clicking >> a link or button to edit a particular file. >> >> Currently, I have this in the app: >> >> get '/edit' => sub { >> my $c = shift; >> my $result = `/usr/bin/gvim $filename 2>&1`; >> $c->redirect_to('/'); >> }; >> >> Sometimes it works, but other times, gvim runs twice when the link is >> clicked and more frequently, gvim runs but hangs up in the background, >> after which I end up killing the gvim process and killing and restarting >> the web app to get it back to working. >> >> Is there a way to launch gvim (or other interactive programs) more >> reliably? >> >> I'm using the following for a start script: >> >> #!/usr/bin/perl >> use warnings; >> use strict; >> use Daemon::Control; >> >> exit Daemon::Control->new( >> name => "My Application", >> lsb_start => '$syslog $remote_fs', >> lsb_stop => '$syslog', >> lsb_sdesc => 'My App', >> lsb_desc => 'Controls the time tracker service.', >> #path => '/home/symkat/etc/init.d/program', >> >> program => '/usr/bin/morbo', >> program_args => [ '/path/to/mojolicious/app.pl' ], >> >> pid_file => '/tmp/myapp.pid', >> stderr_file => '/var/log/myapp/myapp.log', >> stdout_file => '/var/log/myapp/myapp.log', >> >> user => 'myuser', >> group => 'myuser', >> >> fork => 2, >> >> )->run; >> >> >> Thank you, >> >> -- >> Matthew >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Mojolicious" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to mojolicious+unsubscr...@googlegroups.com. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/mojolicious/8930b24b-4e37-4b56-82ed-fad82031fe44%40googlegroups.com >> <https://groups.google.com/d/msgid/mojolicious/8930b24b-4e37-4b56-82ed-fad82031fe44%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- > You received this message because you are subscribed to the Google Groups > "Mojolicious" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to mojolicious+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/mojolicious/CAG2_C8CwMLwBXwVDdEicwpMYX1fvc3MHSo_CML_4Q7i%3DEHhwgg%40mail.gmail.com > <https://groups.google.com/d/msgid/mojolicious/CAG2_C8CwMLwBXwVDdEicwpMYX1fvc3MHSo_CML_4Q7i%3DEHhwgg%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "Mojolicious" group. To unsubscribe from this group and stop receiving emails from it, send an email to mojolicious+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/mojolicious/CACyQ%2BFTkKXBF2xyCH2MZpywMEiqW1mxK9FdpfK0DGapR%2B26pbw%40mail.gmail.com.