Hello:
I’m working on a dialog manager and I’m stuck at the part where I need
to launch a terminal process and also kill it.
This is what I have so far.
Launch:
@terminal_pid = IO.popen(‘gnome-terminal’)
Kill
Process.kill :SIGTERM, @terminal_pid.pid if !@terminal_pid.nil?
That method seems to work for stuff such as google-chrome, gcalctool,
pidgin, however it has no effect on gnome-terminal nor gedit.
The Ruby script runs within a terminal window itself so I have no
interest in “kill -9 ‘gnome-terminal’”. I am trying to kill only that
specific @terminal_pid
Can anyone explain what is going on or a way of fixing it?
Thank you in advance!
PS:
On 8/16/2010 10:11 PM, Lg Lg wrote:
PS:
Processes such as gnome-terminal are free to ignore sigterm, and many
do. If you want to force the process to die, you want sigkill (the
equivalent of kill -9). Good manners says you should first try sigterm
to give a process a chance to exit gracefully before sending sigkill.
Walton H. wrote:
On 8/16/2010 10:11 PM, Lg Lg wrote:
PS:
Processes such as gnome-terminal are free to ignore sigterm, and many
do. If you want to force the process to die, you want sigkill (the
equivalent of kill -9). Good manners says you should first try sigterm
to give a process a chance to exit gracefully before sending sigkill.
I tired both:
Process.kill :SIGKILL, @terminal_pid.pid if !@terminal_pid.nil?
and
kill -9 #{@terminal_pid.pid}
but the terminal window won’t close.
I know that if I do something like pkill -9 ‘gnome-terminal’ it will
work, but the thing is that I am interested in killing only that last
window that ‘gnome-terminal’ created.