[Chicago-talk] system command to kill Xwindows session?
Richard Reina
richard at rushlogistics.com
Thu Mar 11 05:39:25 PST 2010
Hello Jonathon,
Thanks again for your suggestions. I was reading up on Xvfb and I not sure I understand what it will and won't do. What I need is to give a user working in console mode to the ability to view a multi-page tiff file and save it. This is something I currently do in Xwindows using evince. Will a Xvfb session allow for that? If not is the code you included below a good way to go about something like that?
Thanks,
Richard
---- Chicago.pm chatter <chicago-talk at pm.org> wrote:
>
> OK, so here are my thoughts on this issue.
>
> "startx" has way too much baggage for an automated process. Do you
> really want the X server to load, take over the screen and keyboard, and
> wait for default system window manager (like a full GNOME session) to
> load... or do you just want to run some script that requires an X
> server?
>
> In the first case, sure, use startx. But isn't the user going to be
> confused when the X server randomly dies without saving his session?
>
> If you just want an interactive Xserver, though, just run "X :1" or
> whatever, and then set DISPLAY to ":1". When you don't want X anymore,
> just send it SIGTERM or whatever.
>
> But in most cases, you don't actually need a real Xserver that touches
> the hardware; you can just use Xvfb and connect your clients to that.
> Then there is no interference with the host machine.
>
> http://en.wikipedia.org/wiki/Xvfb
>
> Any time I have ever needed an X server for an automated process, Xvfb
> has been what I've needed. It works like a real X server, except it
> doesn't touch the real hardware.
>
> Finally, stop fighting with hacks around system and qx. If you need to
> start a real background process, use a module like AnyEvent::Subprocess:
>
> my $done = AnyEvent->condvar;
> my $job = AnyEvent::Subprocess->new(
> code => [qw/Xvfb :1234/],
> on_completion => sub { say 'X server exited with status '. $_[0]->exit_status },
> );
>
> my $proc = $job->run;
> $ENV{DISPLAY} = ':1234';
> <interact with the X server>;
> $proc->kill('TERM');
>
> Much cleaner.
>
> Regards,
> Jonathan Rockway
>
> * On Sun, Mar 07 2010, Richard Reina wrote:
> > Linux. Sorry.
> > ---- Chicago.pm chatter <chicago-talk at pm.org> wrote:
> >>
> >> You didn't telll me if you are on UNIX.
> >>
> >> The "startx" script has to give you the PID, which it currently isn't doing,
> >> and then you have to gather the PID.
> >>
> >> In "startx", assuming Unix
> >>
> >> $!/bin/ksh
> >> Foobar &
> >> echo $!
> >>
> >> I assume you are using the '&' to background "Foobar". The '$!' gives you
> >> pid of background job, but must be immediately following "Foobar &" command.
> >>
> >> In Perl, you gather the echoed PID by using "qx" instead of system()
> >>
> >> my $thePid = qx/startx/;
> >>
> >> Now you can kill $thePid.
> >>
> >> Got to go. Goodluck, bye.
> >>
> >> Alexander
> >>
> >> -----Original Message-----
> >> From: chicago-talk-bounces+danel=speakeasy.net at pm.org
> >> [mailto:chicago-talk-bounces+danel=speakeasy.net at pm.org] On Behalf Of
> >> Richard Reina
> >> Sent: Sunday, March 07, 2010 10:06 AM
> >> To: Chicago.pm chatter
> >> Subject: Re: [Chicago-talk]system command to kill Xwindows session?
> >>
> >> I have script that starts an xwindows session with system("startx") I want
> >> it to end as soon as a specific tast is done?
> >>
> >>
> >> ---- Chicago.pm chatter <chicago-talk at pm.org> wrote:
> >> >
> >> > Your question is incoherent; obviously if you are looking for a system
> >> > command, then its not a Perl function.
> >> >
> >> > How did you start the process that opened the window, and are you willing
> >> to
> >> > kill the entire process?
> >> >
> >> > On Unix, if you know the process-id, then try:
> >> >
> >> > system("kill TERM $thePid");
> >> >
> >> > Alexander
> >> >
> >> > -----Original Message-----
> >> > From: chicago-talk-bounces+danel=speakeasy.net at pm.org
> >> > [mailto:chicago-talk-bounces+danel=speakeasy.net at pm.org] On Behalf Of
> >> > Richard Reina
> >> > Sent: Sunday, March 07, 2010 9:18 AM
> >> > To: chicago-talk at pm.org
> >> > Subject: [Chicago-talk] system command to kill Xwindows session?
> >> >
> >> > Does anyone know if there is a perl fucntion or a command that can be put
> >> > into system("") that will kill Xwindow and return a script/user to the
> >> > console?
> >> >
> >> > Thanks,
> >> >
> >> > Richard
> >> > _______________________________________________
> >> > Chicago-talk mailing list
> >> > Chicago-talk at pm.org
> >> > http://mail.pm.org/mailman/listinfo/chicago-talk
> >> >
> >> > _______________________________________________
> >> > Chicago-talk mailing list
> >> > Chicago-talk at pm.org
> >> > http://mail.pm.org/mailman/listinfo/chicago-talk
> >> >
> >> _______________________________________________
> >> Chicago-talk mailing list
> >> Chicago-talk at pm.org
> >> http://mail.pm.org/mailman/listinfo/chicago-talk
> >>
> >> _______________________________________________
> >> Chicago-talk mailing list
> >> Chicago-talk at pm.org
> >> http://mail.pm.org/mailman/listinfo/chicago-talk
> >>
> > _______________________________________________
> > Chicago-talk mailing list
> > Chicago-talk at pm.org
> > http://mail.pm.org/mailman/listinfo/chicago-talk
>
> --
> print just => another => perl => hacker => if $,=$"
> _______________________________________________
> Chicago-talk mailing list
> Chicago-talk at pm.org
> http://mail.pm.org/mailman/listinfo/chicago-talk
>
More information about the Chicago-talk
mailing list