On 8/16/2010 10:11 PM, Lg Lg wrote:
> 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:
>   
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.