C语言ctrl z按多了+z和EOF的问题

ctrl z按多了-c 发送 SIGINT 信号给前台进程组中嘚所有进程常用于终止正在运行的程序。

ctrl z按多了-z 发送 SIGTSTP 信号给前台进程组中的所有进程常用于挂起一个进程。

ctrl z按多了-d 不是发送信号而昰表示一个特殊的二进制值,表示 EOF

接下来笔者通过不同的例子来说明这些组合键的差异。


【注】在终止程序之前需要先回车在按ctrl z按多了+Z才能进行终止。

直接就终止程序了(程序和输入string的那个一样)

在前面讲解了结束的条件,那么统计字符有事如何呢在K&R的C语言教程里關于输入字母计数的程序,如下:


代码不复杂只有在键盘输入EOF键时,循环才会结束

例如输入 “abcd^z 回车” 时,程序还在继续继续后在新嘚一行输入 “^z 回车” 时,程序才结束输出5。

? 第一行内的三个ZZ^Z并没有算三次;
? 第二行开头的^Z后面三个字母efg 并没有计算到coff里也就是说,程序运行到了接收字母e 时已经跳出了循环
? abcd 四个字母,再加一次回车所以输出是5 (如果中间输入两次回车,也就是“abcdZZ^Z 回车 回车 ^Zefg 回车”时输出是6,就说明)
? while循环遇到^Z开头的新的一行就结束了无论后面有多少字母,这些输入的字母都没有影响到coff的值

总结一下就是系統用了一个很不常用的键盘组合产生的消息值来代表EOF,然后是否认定为EOF需要判断出现的位置。

我要回帖

更多关于 ctrl z按多了 的文章

 

随机推荐