擅长:python、mysql、java
<p>问题是:<code>Ctrl+D</code>不会杀死程序,它会在中途缩短等待时间。当您按<code>Ctrl+D</code>时,您将中断正在等待输入的进程'<code>read()</code>调用。</p>
<h2>Ctrl+D组合键</h2>
<p>大多数程序在读取<code>0</code>字节作为输入时将中止。如果您<code>Ctrl+D</code>在输入任何内容之前,您将向输入管道发送0个字节,并且可能会导致程序关闭,这可能会认为没有什么事情要做了。这不是强迫的。</p>
<p>但是,如果您按一些键,然后<code>Ctrl+D</code>,您中断的<code>read()</code>调用将返回该文本,并且底层程序决定等待下一轮。</p>
<p>这就是为什么,当您再次<code>Ctrl+D</code>而不输入任何新文本时,您将获得预期的行为。</p>
<h2>你的案子</h2>
<p>这就是可能发生的事情:</p>
<ol>
<li><p>你输入一些字符,它们就会被缓冲。</p></li>
<li><p>你<code>Ctrl+D</code>。文本到达<code>iPdb</code>,但它没有检测到新行,因此它等待更多。</p></li>
<li><p>你又<code>Ctrl+D</code>。这一次<code>0</code>字节到达<code>iPdb</code>,它假设没有更多的内容出现,并处理文本,不管是否有新行。</p></li>
</ol>