我已经开始学习 C,也开始使用 Ubuntu。我正在通过终端在 vim 中编写代码。我一直在向 Kernighan 和 Ritchie 学习。这是代码-
#include <stdio.h>
int main()
{
int c;
while ( (c = getchar()) != EOF)
putchar(c);
return 0;
}
现在,我的问题是:-
- 如果我按 ctrl+z 程序停止,但如果我按 ctrl+D 程序也会终止,当我在网上阅读它时它说 ctrl+z 是 Windows 中的 EOF,而 ctrl+d 在 linux 中。这是否意味着它们在linux中都是EOF?如果是这样,其他 EOF 是什么?
- 在本书的第一章中出现如此复杂的问题可以吗?还是我应该通读一遍,这些想法会在我继续阅读时被清除?
最佳答案
两件不同的事情正在发生。
在 Windows 中键入 Control-Z 或在 Linux 中键入 Control-D 会触发文件结束条件并导致 getchar()
返回值 EOF
.
在 Linux 中键入 Control-Z 会有所不同:它暂停程序的执行。键入 Control-Z 后,如果键入 jobs
命令,它将显示您暂停的程序。打字fg
将导致它恢复并继续接受输入——直到您通过键入 Control-D 发出文件结束条件信号。这样可以更容易地查看您的程序是否生成了一些输出。
Control-Z 的行为与您编写程序的方式无关; Control-Z 将暂停(几乎)任何 正在运行的程序,无论它是否用 C 编写,也无论它是否正在等待输入。该行为特定于 Linux 和其他类 Unix 操作系统。
您可能永远用不完 doubts and questions ;我当然没有。
关于c - 什么是 ubuntu 中的 EOF 以及 Kernighan 和 Ritchie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20075114/