A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李政 中级黑马   /  2013-7-24 18:59  /  11697 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李政 于 2013-7-26 09:49 编辑

命令行中的ctrl+c到底是什么意思
在第24课的第三节中,在客户端为什么要判断一次line==null
我觉得等于null的时候当然是已经结束了这个程序了,何必再去判断null呢

最后的疑问都在命令行中的Ctrl+c是什么意思了?

评分

参与人数 1黑马币 +3 收起 理由
杨兴庭 + 3 赞一个!

查看全部评分

9 个回复

倒序浏览
ctrl+c 不就是停止当前运行代码?

评分

参与人数 1黑马币 +3 收起 理由
杨兴庭 + 3 赞一个!

查看全部评分

回复 使用道具 举报
终止当前所运行的代码。

评分

参与人数 1黑马币 +3 收起 理由
杨兴庭 + 3

查看全部评分

回复 使用道具 举报
call off 的意思,就是调用停止当前进程的系统 api

评分

参与人数 1黑马币 +3 收起 理由
杨兴庭 + 3

查看全部评分

回复 使用道具 举报
停止当前所运行的代码

评分

参与人数 1黑马币 +3 收起 理由
杨兴庭 + 3 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 王磊 于 2013-7-24 21:13 编辑

通过打印语句的逐行验证的结果,有一些个人的理解。
Ctrl+C,是系统底层的一个关键字,通过键入它,可以结束当前运行的线程,并提供给当前线程一个null指令,这个null指令只能被本地线程(客户端识别),因为通过验证发现当键入Ctrl+C的时候,服务端接收到的是一个值为"null"的字符串,这样在服务端看这个字符串就不具备与客户端识别的一样的功能。服务端对于这个"null"只会当做字符串去处理。

而且通过验证发现,在客户端执行Ctrl+C的时候,服务端线程并不是马上停止,而是会继续执行以下几行代码,我也不知道这是什么原因,目前还在查相关资料。。。
所以这就可以解释为什么要在客户端执行一次判断line==null,因为判断它,是为了让客户端识别Ctrl+C发出的可识别指令,但是执行后会继续执行后续一些代码,这样就会执行到关流和关服务端的方法close(),这个方法才会给服务端发送一个服务端可识别的null指令。
而如果不加这条判断语句,虽然客户端资源也被关闭,但却不是通过关资源的方法关闭的,这样服务端没有得到确切的客户端关闭的指令,这样的话服务端还有阻塞式方法在等待执行,并且又同时与客户端没有了连接,这样服务端就会报出异常。

本人验证的时候忘记截图,而且要截的也实在太多了,楼主可以自己先试下去验证。应该会有一定的理解的。
说的有点乱,希望能够有所帮助。
回复 使用道具 举报
Mote 初级黑马 2013-7-24 22:03:18
7#
简单说,就是清空或停止当前DOS命令
回复 使用道具 举报
你就理解为强制结束dos命令就可以了
回复 使用道具 举报
李政 中级黑马 2013-7-26 23:38:35
9#
王磊 发表于 2013-7-24 21:08
通过打印语句的逐行验证的结果,有一些个人的理解。
Ctrl+C,是系统底层的一个关键字,通过键入它,可以结 ...

嗯 谢谢了
回复 使用道具 举报
个人理解:首先Ctrl+C是关键字;
          跟循环语句里的关键字“break”相似,跳出当前运行的进程。
         
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马