windows和linux下的EOF

EOF:end of file  標誌文件的結尾。

在Windows下,ctrl+Z是文件結束符;

在Linux,Unix,Mac OS X下,ctrl+D是文件結束符;

不過這兩種文件結束符在某些地方還是略有不同。



關於EOF在Linux,Windows下的關係:(見下面例子)
 

#include<stdio.h>

main(){
        int c;
        c=getchar();
        while(c!=EOF){
                putchar(c);
                c=getchar();
        }
        if(c==EOF){
                printf("WOW\n");
        }
}

在Linux下,我按下ctrl+D,能顯示WOW,說明ctrl+D是代表EOF;
Linux的輸入檢查:當在輸入一串字符時,當按下ctrl+D,立即響應,把ctrl+D之前所輸入的全部放入緩衝區供使用,ctrl+D停止了本次的輸入;(在sdsddsdsdd後沒有回車!)            當ctrl+D單獨使用,那麼相當於EOF;

解釋程序:在第一個sdsdd後,我輸入ctrl+D,程序緊接着輸出sdsdd;
在最後,我直接輸入ctrl+D,然後輸出WOW;

 

Linux下的ctrl+z表示掛起進程。
Linux下的ctrl+c表示中斷進程。
它們對進程的狀態的影響是不同的。在ps -aux可查看狀態,ctrl+z使stat的值爲t,ctrl+c使stat的值爲i。


在windows下,我單獨按下ctrl+z,能顯示WOW;
Windows的輸入檢查:只有回車鍵按下之後,纔對輸入串進行檢查;如果ctrl+z前面有輸入,將ctrl+z及其之前的內容推入緩衝區,後面的內容丟棄;(在第二行最後是沒有回車的,因爲回車被ctrl+Z截斷的)       單獨使用,相當於EOF;


解釋程序:在第一個輸入中,在ctrl+Z後還輸入了其他內容,但是在輸出中只顯示了abcd(還有ctrl+z的亂碼),在單獨使用ctrl+Z,輸出了WOW;

 

在windows下,ctrl+D就是一個普通字符。
在windows下,ctrl+C強行終止程序(閃退),然後輸出WOW(即使在前面有輸入的情況下)


關於EOF的實際值,在stdio.h中定義,一般爲-1,但是程序員可以不用瞭解其具體值,但是一定要求,EOF的值不能在char型變量的取值範圍之內。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章