Linux和Windows下Ctrl+Z和Ctrl+D的区别,该怎么处理

Linux和Windows下Ctrl+Z和Ctrl+D的区别
#include<iostream>
using namespace std;

int main()
{
int p;
while(cin >> p)
cout << p <<"\n" ;
  return 0;
}
//文件名为hh
Linux下
1)ctrl+Z
city@ubuntu:~/Desktop/temp$ ./hh
1 2 ^Z(Ctrl+Z)无回车
[6]+ Stopped ./hh
city@ubuntu:~/Desktop/temp$ 

2)ctrl+D
city@ubuntu:~/Desktop/temp$ ./hh
1 2(Ctrl+D) 1
2(Ctrl+D)无回车
city@ubuntu:~/Desktop/temp$ 

两次的输出结果都不一样,有什么区别呢?
而且在Windows下Ctrl+Z和Ctrl+D的输出
1)ctrl+Z
D:\Documents and Settings\cht\桌面\test\chapter1\bin\Debug>hh
1 2 ^Z(ctrl+Z)回车
1
2
^Z(ctrl+Z)回车

D:\Documents and Settings\cht\桌面\test\chapter1\bin\Debug>
2)ctrl+D
D:\Documents and Settings\cht\桌面\test\chapter1\bin\Debug>hh
1 2 ^D(ctrl+D)回车
1
2

D:\Documents and Settings\cht\桌面\test\chapter1\bin\Debug>

这个问题是不是很无聊啊~~~但是我不清楚是怎么回事?Linux和Windows处理Ctrl+Z和Ctrl+D的方式不同,但两个有什么区别呢?求大牛指教



------解决方案--------------------
在 linux 环境,ctrl + d 通常是结束输入,次数会读到一个EOF
ctrl+z 是挂起程序的执行

而这个行为是可以设置的
你完全可以设置 ctrl+a是结束输入