关于ctrl+c命令原理机制究竟是怎样的(非复制)

J2EE 码拜 6年前 (2015-04-02) 2138次浏览 0个评论

键盘录入
for(int i=0;i<3;i++)
{
String name = null;
while((name=br.readLine())!=null)
{
       System.out.println(“正在运行……”);
}
}
控制台等待键盘录入,在readLine()函数阻塞的时候输入ctrl+c后,name为null跳出循环,结果打印出三行,代表外层循环在输入ctrl+c后被执行,而之前写过的程序,ctrl+c是直接强制结束程序,而在这里却会继续执行,求问ctrl+c命令的原理机制究竟是怎样的??

关于ctrl+c命令原理机制究竟是怎样的(非复制)
while循环只要输入不为空就不会跳转到外层循环,但是程序结束的时候会判断外层循环,当然输出三行,ctrl+c用来终止程序,但这里作为字符串输入了。
关于ctrl+c命令原理机制究竟是怎样的(非复制)
引用 1 楼 wufeng55 的回复:

while循环只要输入不为空就不会跳转到外层循环,但是程序结束的时候会判断外层循环,当然输出三行,ctrl+c用来终止程序,但这里作为字符串输入了。

谢谢回复,可是以上答案不是我想要的

关于ctrl+c命令原理机制究竟是怎样的(非复制)
40分
ctrl+c的退出应用是虚拟机级的命令,而br.readline()是系统级的,所以,br.readline()先处理这个事件,然后,就被解释成字符串了,被处理过的事件如果没有显式的转发,就结束它的传递过程,所以,就到外循环了,而没有被虚拟机处理导致应用退出。
这个解释是你想要的吗?嘿嘿

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于ctrl+c命令原理机制究竟是怎样的(非复制)
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!