Hi all.<div><br></div><div>crtl+c is done! you can see de code in <a href="http://github.com/omazapa/ipython/tree/master/IPython/zmq/">http://github.com/omazapa/ipython/tree/master/IPython/zmq/</a></div><div><br></div><div>

I wrote a new message type in this frontend`s method</div><div><div><br></div><div>def get_kernel_pid(self):</div><div>        omsg = self.session.send(self.request_socket,&#39;pid_request&#39;)</div><div>        while True:</div>

<div>           #print &quot;waiting recieve&quot;</div><div>           rep = self.session.recv(self.request_socket)</div><div>           </div><div>           if rep is not None:</div><div>               self.kernel_pid=rep[&#39;content&#39;][&#39;pid&#39;]</div>

<div>               break</div><div>           time.sleep(0.05)</div><div>        return self.kernel_pid</div></div><div><br></div><div>and y this one in kernel&#39;s class </div><div>def pid_request(self,ident,parent):</div>

<div>            pid_msg = {u&#39;pid&#39;:self.kernel_pid,</div><div>                     &#39;status&#39;:&#39;ok&#39;}</div><div>            self.session.send(self.reply_socket, &#39;pid_reply&#39;,pid_msg, parent, ident)</div>

<div><br></div><div>then we have a new reuqest&#39;s type &#39;<span class="Apple-style-span" style="font-family: &#39;Bitstream Vera Sans Mono&#39;, Courier, monospace; font-size: 12px; line-height: 17px; white-space: pre; "><span class="s" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1,4em; color: rgb(221, 17, 68); ">&#39;execute_request&#39;</span></span><span class="Apple-style-span" style="font-family: &#39;Bitstream Vera Sans Mono&#39;, Courier, monospace; font-size: 12px; line-height: 17px; white-space: pre; "><span class="p" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1,4em; ">,</span></span><span class="Apple-style-span" style="font-family: &#39;Bitstream Vera Sans Mono&#39;, Courier, monospace; font-size: 12px; line-height: 17px; white-space: pre; "> </span><span class="Apple-style-span" style="font-family: &#39;Bitstream Vera Sans Mono&#39;, Courier, monospace; font-size: 12px; line-height: 17px; white-space: pre; "><span class="s" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1,4em; color: rgb(221, 17, 68); ">&#39;complete_request&#39;</span></span><span class="Apple-style-span" style="font-family: &#39;Bitstream Vera Sans Mono&#39;, Courier, monospace; font-size: 12px; line-height: 17px; white-space: pre; "><span class="p" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1,4em; ">,</span></span><span class="Apple-style-span" style="font-family: &#39;Bitstream Vera Sans Mono&#39;, Courier, monospace; font-size: 12px; line-height: 17px; white-space: pre; "><span class="s" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1,4em; color: rgb(221, 17, 68); ">&#39;pid_request&#39;</span></span></div>

<meta http-equiv="content-type" content="text/html; charset=utf-8"><meta http-equiv="content-type" content="text/html; charset=utf-8"><div><br></div><div>frontend&#39;s class  have the attribute kernel_pid and I call get_kernel_pig() in the constructor.</div>

<div>then when I have captured <span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; ">KeyboardInterrupt  send signal SIGINT with kill</span></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; "><br>

</span></div><div><font class="Apple-style-span" face="arial, sans-serif">it is working.</font></div><div><font class="Apple-style-span" face="arial, sans-serif">O</font></div><meta http-equiv="content-type" content="text/html; charset=utf-8"><div>

<br><div class="gmail_quote">2010/7/25 Fernando Perez <span dir="ltr">&lt;<a href="http://fperez.net">fperez.net</a>@<a href="http://gmail.com">gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div class="im">On Sun, Jul 25, 2010 at 2:38 PM, Brian Granger &lt;<a href="mailto:ellisonbg@gmail.com">ellisonbg@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt; I think it is a little dangerous to forward Ctrl-C.  When there are two<br>
&gt; processes like this I think it is very ambiguous as to what it means.  I<br>
&gt; would rather go with a frontend magic:<br>
&gt; :kernel 0 kill<br>
<br>
</div>I really think we do need Ctrl-C.  It would be pretty awful to have an<br>
interactive environment (especially for the line-based, blocking ones<br>
like the plain terminal Omar is working on and Evan&#39;s) where Ctrl-C<br>
doesn&#39;t just stop the kernel, at least on platforms where we can send<br>
processes signals.  Given that the frontend does no real computation,<br>
what other semantics should Ctrl-C have?<br>
<div class="im"><br>
&gt;&gt; In order to do this, you&#39;ll  need to know the PID of the kernel<br>
&gt;&gt; process, but Evan has already been making progress in this direction<br>
&gt;&gt; so you can benefit from his work.  This code:<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; <a href="http://github.com/epatters/ipython/blob/qtfrontend/IPython/zmq/kernel.py#L316" target="_blank">http://github.com/epatters/ipython/blob/qtfrontend/IPython/zmq/kernel.py#L316</a><br>
&gt;&gt;<br>
&gt;&gt; already has a kernel launcher prototype with the necessary PID<br>
&gt;&gt; information.<br>
&gt;&gt;<br>
&gt;<br>
&gt; Let&#39;s start to use the Popen interface of Python 2.6.  It has a terminate<br>
&gt; and kill method that gets around the PID stuf in a cross platform manner.<br>
<br>
</div>subprocess kill only sends SIGKILL, while os.kill allows the sending<br>
of any signal, so I&#39;m not sure it completely replaces os.kill for us.<br>
But for subprocess cleanup then yes, I&#39;m all for using it (especially<br>
if it works reliably in Windows).<br>
<br>
Cheers,<br>
<font color="#888888"><br>
f<br>
</font></blockquote></div><br></div>